点击一个按钮弹出一个QWidget,在按钮的槽函数中大概是这样的, QWidget *a = new widget; a->show(),这样会有一个问题,每点击一次按钮,都会弹出一个新的Qwidget,如果我点击三次,都会出现三个对话框,在不把qwidget定为模态的情况下,请问一下,这种问题的常规解决办法是什么?
设置一个bool变量isexist,开始为false,第一个qwidget出来后将其赋值为true,在槽函数中加一个判断条件
if(!isexist)?
------解决方案--------------------
在程序运行的一开始就 new 了 这个Qwidget
那个按钮里,只负责show
------解决方案--------------------
还可以这样:
把这个对话框声明为类变量,构造函数里 {对话框变量 = 0;}
show函数{
if(!对话框变量){
对话框变量 = new 对话框;
}
对话框变量->show();
}
析构函数里delete。
------解决方案--------------------
如果你的QWidget *a = new widget;每次都一样的话,那你在QWidget前面加个static不就可以了,每次进来都是这个,只要判断判断指针是否存在啊,一个简单的单例模式
------解决方案--------------------
方法1:
class A{
A();
QWidget *a;
};
A::A()
{
a = new QWidget;
}
A::onClicekd()
{
a->show();
}
方法2:
单例模式
方法3:
模态对话框,但是这样你那个窗口不关,就不能做其他操作