首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

一个自定义QDialog类,实例化两次,失败!该如何处理

2012-05-22 
一个自定义QDialog类,实例化两次,失败!某CSDNer提出的问题,本人研究了下,原帖:http://topic.csdn.net/u/20

一个自定义QDialog类,实例化两次,失败!
某CSDNer提出的问题,本人研究了下,原帖:
http://topic.csdn.net/u/20120517/10/ceeec7d3-2cda-43a3-bd24-926b1b92c099.html

实现思路如下:
自定义QDialog类一个,分别实例化成两个dialog,代码如下:
[code=C/C++][/code]

#ifndef MYDIALOG_H
#define MYDIALOG_H

#include <QDialog>

class QPushButton;

class MyDialog : public QDialog
{
  Q_OBJECT
public:
  MyDialog(QWidget *parent = 0);
signals:
  void on_button_clicked();
  void okToHide();
private:
  QPushButton *button;
private slots:
  void okToShow();
};

#endif // MYDIALOG_H
[code=C/C++][/code]

main文件中代码:
[code=C/C++][/code]
#include <QApplication>
#include "mydialog.h"

int main(int argc, char *argv[])
{
  QApplication app(argc, argv);

  MyDialog *a = new MyDialog;
  MyDialog *b = new MyDialog;
  QObject::connect(a, SIGNAL(okToHide()), b, SLOT(okToShow()));
  QObject::connect(b, SIGNAL(okToHide()), a, SLOT(okToShow()));
  a->show();

  app.exec();
}
[code=C/C++][/code]

错误为:
on_button_clicked()和okToHide()两个信号重定义了,各种朋友帮忙看看,拜谢~

[解决办法]
signals:
void on_button_clicked();
void okToHide();
Qt还挺好使,连这个都能发现,信号就是一个函数式的声明,没有函数体,用的时候emit xxxx(),你给信号写成函数了。
private slots:
void okToShow();
改成:
public slots:
void okToShow();

我的那个例子比你这个简单点。

热点排行