Einen neuen Dialog öffnen

Alles rund um die Programmierung mit Qt
Antworten
Streifenhörnchen
Beiträge: 3
Registriert: 4. Juli 2006 01:55
Wohnort: Dortmund

Einen neuen Dialog öffnen

Beitrag von Streifenhörnchen »

Also: ich hab bestimmt schon hundert foren durchsucht und ich hab nix nützliches gefunden, auch in diesem Forum habe ich gesucht und nur einen Thread gefunden der mir nützlich erschien, aber dann hatts doch nicht geklappt.

Mein Problem(da hab ich so viele von) ist dass ich von einer Form durch nen button ne neue Form aufrufen will. Entweder ich bin zu dumm, oder das ist zu kompliziert oder zu simpel dass ich nicht drauf komme.

Vielleicht kann mir ja hier jemand helfen.

Ich habs so gemacht wie http://www.qtforum.de/forum/viewtopic.p ... ton+dialog
stargazer aber das funzt nicht.

Ich verwende Qt 4.1.4 und bin relativ neu in der Sprache C++ und auch in Qt.


Über Antworten und vllt. auch Codebeispiele würde ich mich sehr freuen.

Danke im vorraus.

Streifenhörnchen
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Für solch triviale Sachen empfehle ich dir das Studium der Beispiele, die Qt beiliegen. Wenn Du eins gefunden hast, was das tut was Du machen willst, dann guck dir den Code an, setze Breakpoints, spiel mit rum. Learning by doing eben.
Streifenhörnchen
Beiträge: 3
Registriert: 4. Juli 2006 01:55
Wohnort: Dortmund

Beitrag von Streifenhörnchen »

Hehe, der ist gut. Rate mal was ich schon die ganze zeit versuche...

Eigentlich hab ich gedacht dass hier jemand nen Tipp hat... wohl nich
DarkWotan
Beiträge: 65
Registriert: 18. Mai 2006 10:03

Beitrag von DarkWotan »

Du hast nichts gefunden, weil das wirklich trivial ist und wie macman schon sagte in der Dokumentation Beispiele dazu sind.

Ungetesteter Quickhack

Code: Alles auswählen

class MyForm : public QWidget
{
  //...
};

class MyMainWindow : public QMainWindow
{
  Q_OBJECT

  private:
  MyForm* myForm;
  QPushButton *button;

  public:
  MyMainWindow();
};

MyMainWindow::MyMainWindow()
{
  myForm = new MyForm;
  button = new QPushButton("Neues Formular", this);

  connect(button, SIGNAL(clicked()), myForm, SLOT(show()));
}
MfG, Cedric
Streifenhörnchen
Beiträge: 3
Registriert: 4. Juli 2006 01:55
Wohnort: Dortmund

Beitrag von Streifenhörnchen »

So ich hab das nun so versucht und beim compilieren bekomm ich immer diese Fehler:

.objs\main.o:main.cpp:(.text$_ZN6WindowD1Ev[Window::~Window()]+0xb): undefined reference to `vtable for Window'
.objs\main.o:main.cpp:(.text$_ZN6WindowD1Ev[Window::~Window()]+0x17): undefined reference to `vtable for Window'
.objs\main.o:main.cpp:(.text$_ZN6WindowC1Ev[Window::Window()]+0x3a): undefined reference to `vtable for Window'
.objs\main.o:main.cpp:(.text$_ZN6WindowC1Ev[Window::Window()]+0x46): undefined reference to `vtable for Window'
collect2: ld returned 1 exit status

Ich verwende CodeBlocks und compiliere auch mit CodeBlocks. Das mit dem Consolenkram versteh ich nicht so ganz ;)

Hat irgendjemand ne Idee??

Danke, Streif~
DarkWotan
Beiträge: 65
Registriert: 18. Mai 2006 10:03

Beitrag von DarkWotan »

Streifenhörnchen hat geschrieben:So ich hab das nun so versucht und beim compilieren bekomm ich immer diese Fehler:

.objs\main.o:main.cpp:(.text$_ZN6WindowD1Ev[Window::~Window()]+0xb): undefined reference to `vtable for Window'
.objs\main.o:main.cpp:(.text$_ZN6WindowD1Ev[Window::~Window()]+0x17): undefined reference to `vtable for Window'
.objs\main.o:main.cpp:(.text$_ZN6WindowC1Ev[Window::Window()]+0x3a): undefined reference to `vtable for Window'
.objs\main.o:main.cpp:(.text$_ZN6WindowC1Ev[Window::Window()]+0x46): undefined reference to `vtable for Window'
collect2: ld returned 1 exit status
Das sind aber keine Syntax-, eher semantische Fehler woraus Linkerfehler resultieren.
Er meldet ein Problem mit der virtuelle Methoden-Tabelle und dem Kon- und Destruktor von Window. Poste doch bitte etwas Code, damit man auch sieht, was du kehrtver machst.
Ich verwende CodeBlocks und compiliere auch mit CodeBlocks. Das mit dem Consolenkram versteh ich nicht so ganz ;)
Dabei gibt's da nicht viel zu verstehen. Du bist einfach zu faul, dir die sehr gute Doku durchzulesen.

MfG, Cedric
Sym
Beiträge: 139
Registriert: 15. Mai 2006 15:38
Wohnort: Bremen

Beitrag von Sym »

Da ich Codeblocks nicht kenne und ich auch faul bin und mir deshalb nicht die Mühe mache, im Internet danach zu suchen, kann ich leider nicht helfen. ;)
Flachkoepper
Beiträge: 149
Registriert: 11. Januar 2005 12:14
Wohnort: Hannover

Beitrag von Flachkoepper »

Das sieht doch stark danach aus, dass einmal vergessen wurde, qmake aufzurufen.
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Re: Einen neuen Dialog öffnen

Beitrag von patrik08 »

Streifenhörnchen hat geschrieben:Also: ich hab bestimmt schon hundert foren durchsucht und ich hab nix nützliches gefunden, auch in diesem Forum habe ich gesucht und nur einen Thread gefunden der mir nützlich erschien, aber dann hatts doch nicht geklappt.

Mein Problem(da hab ich so viele von) ist dass ich von einer Form durch nen button ne neue Form aufrufen will. Entweder ich bin zu dumm, oder das ist zu kompliziert oder zu simpel dass ich nicht drauf komme.

Vielleicht kann mir ja hier jemand helfen.

Ich weiss ... auch ich hatte grosse muhe ein neuen dialog zu oeffnen da die qt4 beispiele fast keins ein richtigen dialog oeffnet .. es sind meistens nicht mal richtige classen da viel in main.cpp geschrieben ist das aus dem konspet bringt...

Ich habe es erst richtig gelernt ( dialoge zu oeffnen ) als ich http://sourceforge.net/projects/monkeystudio/ gefunden habe ... dieses IDE hat eine gute methode um die parent immer auf null zu setzen...
Die template um header e source zu bauen sind super... somit habe ich mir selber ein kleines tool geschrieben um wenigstens die vorlage vom designer zu schreiben ist heute noch dort http://ppk.ciz.ch/qt_c++/qt/res.html einfach die class name reinschreiben die ganz oben ist im designer Dialog und doppelclicken um die vorlage zu bauen...

dann um ein neuen dialog zu oeffnen muss ich nur noch ein slot hinzufuegen mit.

Code: Alles auswählen

void Gui_Main::OpenAbout()
{
  Gui_About::self( this )->exec(); 
}
und der parent ist automatisch gesetzt ... man kann damit auch parameter am dialog senden..

Code: Alles auswählen


void HTML_Edit::makehrefLink()
{
    bool is_selected = html_area->textCursor().hasSelection();
    QString sthtml = html_area->textCursor().selectedText();
    if (vol_18->isChecked()) {
        QString ltext;
         if (sthtml.size() < 1) {
           sthtml= "Text to link";  
         }
         Href_Gui::self( this )->text_href->setText(sthtml);
         Href_Gui::self( this )->exec();
         if (Href_Gui::self) {
              QStringList data = Href_Gui::_self->GetUserConfig();
               if (data.count() > 0) {
               /*qDebug() << "### linerr rrr   " << QString(data.at(0));
               qDebug() << "### linerr rrr   " << QString(data.at(1));
               qDebug() << "### linerr rrr   " << QString(data.at(2));*/
                ltext ="<a href=""+QString(data.at(1))+"#target="+QString(data.at(2))+"">"+QString(data.at(0))+"</a>";
                QTextDocumentFragment fragment = QTextDocumentFragment::fromHtml(ltext);
                html_area->textCursor().insertFragment(fragment); 
                vol_18->setChecked(false);
                }
          }
    } else {
        QTextDocumentFragment fragment = QTextDocumentFragment::fromHtml(sthtml);
        html_area->textCursor().insertFragment(fragment);     
    }
    
}
Und die beste methode um zu lernen dialoge zu oeffnen ist einfach in fremden source code reinzuschauen....

Zu zeit existieren bei http://sourceforge.net/ 800 projekten mit QT davon
25 mit qt4 suchwort einfach bei softwaremap den richtigen filter setzen...

ich bin auch dabei mit http://sourceforge.net/projects/qtexcel-xslt/ und
http://sourceforge.net/projects/visual-xsltproc/ nach 3 monaten qt erfahrung...
Antworten