标签:one 代码 str 阻塞 选择 setattr back 依赖 info
对话框介绍
QWidget和QDialog有什么不同
QDialog:
QWidget:
代码试验: QWidget和QDialog区别
代码1:
int main(int argc, char *argv[]) { QApplication a(argc, argv); QWidget w; w.resize(300,300); QDialog d(&w); d.resize(150,150); w.show(); d.show(); return a.exec(); }
效果:
可以看到,对话框始终都是作为独立的交互窗口
代码2:
int main(int argc, char *argv[]) { QApplication a(argc, argv); QWidget w1; w1.resize(300,300); QWidget w2(&w1); w2.resize(150,150); w1.show(); w2.show(); return a.exec(); }
效果:
可以看到只出现了一个窗口,并没有出现第二个窗口
对话框类型
模态对话框
实验代码:
int main(int argc, char *argv[]) { QApplication a(argc, argv); QWidget w; w.resize(300,300);
w.show(); QDialog d(&w); d.resize(150,150); d.exec(); //进入对话框d的消息循环,从而实现阻塞式调用 return a.exec(); }
非模态对话框
实验代码:
int main(int argc, char *argv[]) { QApplication a(argc, argv); QWidget w; w.resize(300,300); w.show(); QDialog *d = new QDialog(&w); d->setAttribute(Qt::WA_DeleteOnClose); d->resize(150,150); d->show(); return a.exec(); }
混合模态对话框
实验代码:
int main(int argc, char *argv[]) { QApplication a(argc, argv); QWidget w; w.resize(300,300); w.show(); QDialog *d = new QDialog(&w); d->setAttribute(Qt::WA_DeleteOnClose); d->setModal(true); d->resize(150,150); d->show(); return a.exec(); }
对话框返回值处理
-使用void QDialog::done ( int r ) 作为交互结果,将r值返回给exec()
-返回值为QDialog::Accepted时,表示用户操作成功
-返回值为QDialog::Rejected时,表示用户操作失败
-也可以自定义返回数值
标签:one 代码 str 阻塞 选择 setattr back 依赖 info
原文地址:https://www.cnblogs.com/lifexy/p/8922050.html