ボタンのクリックイベントで既存のダイアログから新しいダイアログウィンドウを開こうとしていますが、MainWindowからダイアログウィンドウを開いたときにこれを行うことができません。私がしようとしていますQtのダイアログから新しいダイアログを開く
:
Dialog1 *New = new Dialog1();
New->show();
は、ダイアログウィンドウのフォームに既存のダイアログウィンドウを開くの異なる方法はあります?
ボタンのクリックイベントで既存のダイアログから新しいダイアログウィンドウを開こうとしていますが、MainWindowからダイアログウィンドウを開いたときにこれを行うことができません。私がしようとしていますQtのダイアログから新しいダイアログを開く
:
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のQDialogの「ショー」のスロットに信号を「クリック」接続しているかに注意してください:ここで私はそれを行うだろう方法です。とても便利な。
私はQTが新しく、私も同様の問題がありました。私の場合は、メインダイアログの関数から新しいダイアログを呼び出していました。私は新しいダイアログの結果まで待たずにdlg->show
を使っていました。したがって、プログラムはまだ実行中です。 dlg->show
をdlg->exec
に変更すると、ダイアログが表示されます。あなたのコードでは、ダイアログはローカル変数のようですが、おそらく同じ問題があります。他のオプションは、代わりに静的ポインタを使用することです。 mainwindow.hファイル内
Dialog1 *newDlg = new Dialog1();
this->hide();
int result = newDlg->exec();
this->show();
delete newDlg;
あなたの新しいダイアログ へのポインタを宣言し、
#include <myNewDialog.h>
private:
Ui::MainWindow *ui;
MyNewDialog *objMyNewDialog;
のような新しいdialog.hが含まれており、その後、あなたはにアップ示されなければ、あなたのダイアログを呼び出すことができなければなりませんmainwindow.cpp よう
void MainWindow::on_btnClose_clicked()
{
objMyNewDialog= new MyNewDialog(this);
objMyNewDialog->show();
}
前のダイアログ-this->非表示を非表示にすることを忘れないでください (); –