工具ubuntukylin14.04 + Qt5.3 + g++4.8
书是GUI C++ Qt4编程
是这样的,Dialog是一个自定义类,实现一个对话框功能
书里第3和第4章要做个MainWindow的程序(这例子太TM长了。。。。。。)
在MainWindow类声明里
class MainWindow:public QMainWindow
{
.
private:
Dialog* dialog; //声明这个自定义类
.
.
private slots:
void find(); //私有槽,用于显示对话框dialog
};
.
然后这里要在MainWindow里面,点击菜单选项find的时候调用对话框Dialog
私有槽
void MainWindow::find()
{
if(!dialog) //就是这句问题。。
dialog = new Dialog(this);
dialog->show();
}
然后我在构造函数里把这个槽和菜单里的QAction连接起来
我的设想是if(!dialog) 这句先判断是否已经有Dialog对话框了,如果已经有了就补创建Dialog对象
但程序编译完成后,其他功能都正常,但一点击菜单的find选项(弹出对话框dialog)系统就显示 段错误
然后我把if(!dialog) 这句注释掉了,编译完成后点击find选项能弹出对话框,但由于没有判断功能,所以点几次find就跳几个对话框出来
PS:这玩意还没完成。
我想问下为什么这个判断会造成段错误,书上例子的代码是
if(!findDialog) 和我的相比只是变量名不同而已。。。。
------解决思路----------------------
说明你的dialog没有在构造函数中初始化为NULL,是个随机的野指针,应该是:
MainWindow::MainWindow(QWidget *parent)
:QMainWindow(parent)
,dialog(NULL)
{
}