#include "mainwindow.h"
//#include "ui_mainwindow.h"
//#include <QtGui>
//#include <QtWidgets>
#include <QAction>
#include <QMenuBar>
#include <QStatusBar>
#include <QToolBar>
#include <QDialog>
#include <QDebug>
/*MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
*/
MainWindow::MainWindow(QWidget *parent)
:QMainWindow(parent)
{
setWindowTitle(tr("Main Window"));
openAction = new QAction(QIcon(":/images/1"),tr("&Open"),this);
openAction->setShortcut(QKeySequence::Open);
openAction->setStatusTip(tr("Open an existing file"));
connect(openAction,&QAction::triggered,this,&MainWindow::open);
QMenu *file = menuBar()->addMenu(tr("&File"));
file->addAction(openAction);
QToolBar *toolBar = addToolBar(tr("&File"));
toolBar->addAction(openAction);
}
MainWindow::~MainWindow()
{
}
/*模态对话框
* void MainWindow::open()
{
QDialog dialog;//非屏幕中心
dialog.setWindowTitle(tr("Hello,dialog!"));
dialog.exec();
}*/
void MainWindow::open()
{
QDialog dialog(this);//屏幕中心
dialog.setWindowTitle(tr("Hello,dialog!"));
dialog.exec();
if (dialog.exec() == QDialog::Accepted) {//QDialog::exec()是有返回值的,其返回值是QDialog::Accepted或者QDialog::Rejected
qDebug() << "accepted";
// do something
} else {
qDebug("rejected");
// do something else
}
}
/*使用信号槽机制获取数据
* // in dialog:
void UserAgeDialog::accept()
{
emit userAgeChanged(newAge); // newAge is an int
QDialog::accept();
}
// in main window:
void MainWindow::showUserAgeDialog()
{
UserAgeDialog *dialog = new UserAgeDialog(this);
//因为有 this 指针,当主窗口关闭时,UserAgeDialog 也会被销毁,因此也没有内存泄露。
//mainwindow这个主窗口不关闭的情况下,反复打开关闭对话框,理论上会造成程序奔溃,存在内存泄露问题,设置setAttribute()函数是一个好的习惯
connect(dialog, &UserAgeDialog::userAgeChanged, this, &MainWindow::setUserAge);
dialog->show();
}
// ...
void MainWindow::setUserAge(int age)
{
userAge = age;
}*/
/*非模态对话框
* void MainWindow::open()
{
QDialog *dialog = new QDialog;
//在栈上创建,函数show()运行完就消除,窗口无法保留,在堆上创建,解决这个问题
dialog->setAttribute(Qt::WA_DeleteOnClose);//避免泻露内存
//如果设置 dialog 的属性为WA_DeleteOnClose,那么当对话框关闭时,对象被销毁,就不能获取dialog.exec()数据了。
dialog->setWindowTitle(tr("Hello,dialog!"));
dialog->show();
}*/
qt(4) dialog1
猜你喜欢
转载自blog.csdn.net/sinat_39028599/article/details/80723689
今日推荐
周排行