2012-04-13 117 views
6

我想从一个按钮点击事件的现有对话框打开一个新的对话框窗口,但我无法做到这一点,因为我从MainWindow打开对话窗口。从qt中的对话框打开新对话框

我,试图:

Dialog1 *New = new Dialog1(); 

New->show(); 

有没有打开现有的对话窗口对话窗口形式不同的方式???

+0

不要忘记隐藏前面的对话框 - > - > hide(); – 2013-05-27 11:45:05

回答

8

必须有一些其他问题,因为你的代码看起来不错。以下是我想做到这一点:

#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(); 
} 

顺便说一句,请注意我是如何连接QPushButton的“点击”信号了QDialog的“秀”插槽。非常便利。

1

我是QT的新手,我确实有类似的问题。就我而言,我从主对话框的函数调用新对话框。我正在使用dlg->show,它不等到新对话框的结果。因此该程序仍在运行。我将dlg->show更改为dlg->exec,现在对话框工作正常。在你的代码中,对话框似乎是一个局部变量,也许你有同样的问题。其他选项可以是使用静态指针。

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

在mainwindow.h文件,应声明指针到新的对话框 和包括像

#include <myNewDialog.h> 

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

之后,你可以打电话给你的对话框新dialog.h中显示了在mainwindow.cpp like

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