2

メインウィンドウと新しいウィンドウを作成しました。メインウィンドウでボタンを押すと、新しいウィンドウが表示されます。大丈夫です。しかし、ダイアログとして表示するには新しいウィンドウが必要です。つまり、ダイアログが開かれると、ダイアログが閉じられるまでメインウィンドウは機能しません。ダイアログを開くと、新しいtsbがタスクバーに表示されません。これを行う方法。

これが私が使ったコードです、

mainwindow.h

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

form.h

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

public:
 Form(QWidget *parent);

public slots:
void  command();
};

#endif // FORM_H

ここでフォームとは、新しいウィンドウを作成したことを意味し、forms.hそのクラスはForm

4

1 に答える 1

3

2番目のウィンドウを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();
}
于 2012-11-28T11:23:10.997 に答える