【问题标题】:Open new dialog from a dialog in qt从 qt 中的对话框打开新对话框
【发布时间】:2012-04-25 09:15:45
【问题描述】:

我正在尝试在按钮单击事件上从现有对话框打开一个新对话框窗口,但我无法执行此操作,因为我从 MainWindow 打开了对话框窗口。

我正在尝试:

Dialog1 *New = new Dialog1();

New->show(); 

有没有从现有对话框窗口中打开对话框窗口的不同方式???

【问题讨论】:

  • 别忘了隐藏之前的Dialog-this->hide();

标签: qt qt-creator qdialog


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      肯定还有其他问题,因为您的代码在我看来不错。这是我的做法:

      #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 的“显示”槽的。非常方便。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多