【问题标题】:open new window as a dialog (Qt4)作为对话框打开新窗口(Qt4)
【发布时间】:2012-11-28 10:46:31
【问题描述】:

我创建了一个主窗口和一个新窗口。当按下主窗口上的按钮时,将出现新窗口。没关系。但我需要新窗口作为对话框出现。这意味着打开对话框时,主窗口将在对话框关闭之前不起作用。并且当打开一个对话框时,任务栏中不会出现一个新的 tsb。如何做到这一点。

这是我使用的一些代码,

主窗口.h

 private:
  Form *myform;

public slots:
 void myformshow();

主窗口.cpp

mainWin::mainWin(QWidget *parent)
{
  setupUi(this);
 connect(pushButton,SIGNAL(clicked()),this,SLOT(myformshow()));
}

  void mainWin::myformshow(){
myform= new Form(); //make sure to delete newform someware.
myform->show();
}

form.h

 class Form : public QWidget, private Ui::Form
{
 Q_OBJECT

public:
 Form(QWidget *parent);

public slots:
void  command();
};

#endif // FORM_H

这里的Form意思是,我将新窗口创建为forms.h,它的类是Form

【问题讨论】:

标签: c++ qt qt4


【解决方案1】:

使第二个窗口继承自 QDialog(不是绝对必要的,但会给您正确的平台特定行为,例如居中和各种窗口标志),将主窗口设置为其父窗口,并使用其 exec() 函数运行它.

首先,将您的 Form 类更改为从 QDialog 继承:

class Form : public QDialog, private Ui::Form

(如果您在 From 类代码的其他地方引用了 QWidget,也请更改它们。)

然后,在你的 mainWin::myformshow() 函数中,执行:

void mainWin::myformshow()
{
    myform = new Form; //make sure to delete newform someware.
    myform->exec();
}

【讨论】:

  • 我也添加了我的 form.h 文件源。现在你能告诉我如何添加绳子。
  • @LakshanPerera 你忘了#include <QDialog>
  • @LakshanPerera:您的构造函数需要QWidget 参数。要么提供参数,即myForm = new Form(this);,要么使参数可选,Form(QWidget *parent = NULL);
  • @LakshanPerera:从您提出的问题来看,您可能真的想学习某种 C++ 入门。我并不是说这是刻薄的意思,只是说有效地使用 Qt 假定您对 C++ 有一定程度的熟悉,而您提出的问题是非常基本的概念。
  • 总是浏览文档doc.qt.digia.com/qt/qdialog.html#QDialogQt 有一个组织完善的文档,使用它们
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-27
  • 2019-01-01
  • 2023-03-30
  • 2021-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多