当前位置: 代码迷 >> QT开发 >> 关于MainWindow调用自定义类的有关问题
  详细解决方案

关于MainWindow调用自定义类的有关问题

热度:192   发布时间:2016-04-25 03:07:06.0
关于MainWindow调用自定义类的问题
工具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)
{

}