我正在尝试从按钮单击事件的现有对话框中打开一个新的对话框窗口,但是当我从 MainWindow 打开对话框窗口时,我无法执行此操作。
我正在尝试:
Dialog1 *New = new Dialog1();
New->show();
是否有从现有对话框窗口中打开对话框窗口的不同方式???
我正在尝试从按钮单击事件的现有对话框中打开一个新的对话框窗口,但是当我从 MainWindow 打开对话框窗口时,我无法执行此操作。
我正在尝试:
Dialog1 *New = new Dialog1();
New->show();
是否有从现有对话框窗口中打开对话框窗口的不同方式???
一定还有其他问题,因为您的代码对我来说看起来不错。这是我的做法:
#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 的“clicked”信号连接到 QDialog 的“show”插槽的。非常便利。
我是 QT 的新手,我确实遇到了类似的问题。就我而言,我是从主对话框中的函数调用新对话框。我正在使用dlg->show
which 不会等到新对话框的结果。因此程序仍在运行。我改变dlg->show
了dlg->exec
,对话框现在可以工作了。在您的代码中,对话框似乎是一个局部变量,也许您也有同样的问题。其他选择可能是使用静态指针。
Dialog1 *newDlg = new Dialog1();
this->hide();
int result = newDlg->exec();
this->show();
delete newDlg;
在 mainwindow.h 文件中,您应该声明一个指向新对话框的指针并包含新的 dialog.h,如
#include <myNewDialog.h>
private:
Ui::MainWindow *ui;
MyNewDialog *objMyNewDialog;
之后,您可以调用您的对话框以显示在 mainwindow.cpp 中,例如
void MainWindow::on_btnClose_clicked()
{
objMyNewDialog= new MyNewDialog(this);
objMyNewDialog->show();
}