Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 以对话框形式打开新窗口(Qt4)_C++_Qt_Qt4 - Fatal编程技术网

C++ 以对话框形式打开新窗口(Qt4)

C++ 以对话框形式打开新窗口(Qt4),c++,qt,qt4,C++,Qt,Qt4,我创建了一个主窗口和一个新窗口。当按下主窗口上的按钮时,将出现新窗口。没关系。但是我需要一个新窗口作为对话框出现。这意味着当对话框打开时,主窗口将不起作用,直到对话框关闭。当一个对话框打开时,一个新的tsb将不会出现在任务栏上。如何做到这一点 这是我使用的一些代码 主窗口 private: Form *myform; public slots: void myformshow(); mainwindow.cpp mainWin::mainWin(QWidget *parent) {

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

这是我使用的一些代码

主窗口

 private:
  Form *myform;

public slots:
 void myformshow();
mainwindow.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();
}
表格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

使第二个窗口从QDialog继承(不是严格必需的,但会提供正确的平台特定行为,如居中和各种窗口标志),将主窗口设置为其父窗口,并使用其
exec()运行它
功能

首先,将表单类更改为从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
@LakshanPerera:您的构造函数需要
QWidget
参数。要么提供参数,即
myForm=newform(此),或将参数设置为可选,
形式(QWidget*parent=NULL) @ LakshanPerera:从你问的问题来看,你可能真的想从某种程度上获取一个C++底漆。我并不是说这句话是卑鄙的,只是说使用Qt有效地假设了一定程度的熟悉C++,而你问的问题是很基本的概念。