读书人

一个自定义QDialog类实例化两次失

发布时间: 2012-05-22 18:18:54 作者: rapoo

一个自定义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();

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

读书人网 >QT开发

热点推荐