qt

2012-04-13 22 views
6

'da bir iletişim kutusundan yeni iletişim kutusu açın Düğme tıklatma olayında varolan bir iletişim kutusundan yeni bir iletişim penceresi açmaya çalışıyorum ancak bunu, MainWindow'dan iletişim penceresini açtığımda yapamıyorum.qt

Birlikte çalışıyorum:

Dialog1 *New = new Dialog1(); 

New->show(); 

iletişim penceresi formu iletişim Pencere mevcut açılması farklı bir yolu var mı ???

+0

önceki Dialog-this-> hide gizlemek unutmayın (); –

cevap

8

Başka bir sorun olmalı, çünkü kodunuz bana iyi geliyor. Bu arada,

#include <QtGui> 

class Dialog : public QDialog 
{ 
public: 
    Dialog() 
    { 
     QDialog *subDialog = new QDialog; 
     subDialog->setWindowTitle("Sub Dialog"); 
     QPushButton *button = new QPushButton("Push to open new dialog", this); 
     connect(button, SIGNAL(clicked()), subDialog, SLOT(show())); 
    } 
}; 

class MainWindow : public QMainWindow 
{ 
public: 
    MainWindow() 
    { 
     Dialog *dialog = new Dialog; 
     dialog->setWindowTitle("Dialog"); 
     dialog->show(); 
    } 
}; 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 

    MainWindow w; 
    w.setWindowTitle("Main Window"); 
    w.show(); 

    return a.exec(); 
} 

Ben QDialog yönettiği "gösteri" yuvaya QPushButton yönettiği "tıklandığında" sinyali bağlısınız.BREAK nasıl not: Burada yapardım nasıl. Çok kullanışlı.

1

QT için yeni ve benzer bir sorunla karşılaştım. Benim durumumda, yeni iletişim kutusunu ana iletişim kutusundan bir işlevden arıyordum. Yeni iletişim kutusunun sonucunu beklemeyen dlg->show kullanıyordum. Bu nedenle program hala çalışıyor. dlg->exec için dlg->show değiştiriyorum ve iletişim kutusu şimdi çalışıyor. Kodunuzda, diyalog yerel bir değişken gibi görünüyor, belki de aynı probleminiz var. Diğer seçenek yerine statik bir işaretçi kullanmak olabilir. Eğer yeni iletişim için bir işaretçi ilan edip

#include <myNewDialog.h> 

private: 
    Ui::MainWindow *ui; 
    MyNewDialog *objMyNewDialog; 

ve bundan sonra da iletişim arayabilirsin gibi yeni dialog.h içermelidir mainwindow.h dosyasında

Dialog1 *newDlg = new Dialog1(); 
this->hide(); 
int result = newDlg->exec(); 
this->show(); 
delete newDlg; 
0

kadar gösterilmesini mainwindow.cpp gibi

void MainWindow::on_btnClose_clicked() 
{  
    objMyNewDialog= new MyNewDialog(this); 
    objMyNewDialog->show(); 
}