一个自定义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();
我的那个例子比你这个简单点。