当前位置: 代码迷 >> QT开发 >> 简单有关问题的常规办法
  详细解决方案

简单有关问题的常规办法

热度:18   发布时间:2016-04-25 03:45:10.0
求一个简单问题的常规办法。
点击一个按钮弹出一个QWidget,在按钮的槽函数中大概是这样的, QWidget *a = new widget; a->show(),这样会有一个问题,每点击一次按钮,都会弹出一个新的Qwidget,如果我点击三次,都会出现三个对话框,在不把qwidget定为模态的情况下,请问一下,这种问题的常规解决办法是什么?

设置一个bool变量isexist,开始为false,第一个qwidget出来后将其赋值为true,在槽函数中加一个判断条件
if(!isexist)?

------解决方案--------------------
在程序运行的一开始就 new 了 这个Qwidget
那个按钮里,只负责show
------解决方案--------------------
引用:
在程序运行的一开始就 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:
模态对话框,但是这样你那个窗口不关,就不能做其他操作
  相关解决方案