#ifndef TEST_QTGUI_H
#define TEST_QTGUI_H
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QDialog>
#include <QtGui/QHBoxLayout>
#include <QtGui/QPushButton>
#include <QtGui/QSpacerItem>
#include <QtGui/QWidget>
class Ui_Dialog // 基类
{
public:
QWidget *layoutWidget;
QHBoxLayout *hboxLayout;
QSpacerItem *spacerItem;
QPushButton *okButton;
QPushButton *cancelButton;
QPushButton *pushButton_MsgBox;
void setupUi(QDialog *Dialog)
{
Dialog->setObjectName(QString::fromUtf8("Dialog"));
Dialog->resize(QSize(400, 300).expandedTo(Dialog->minimumSizeHint()));
layoutWidget = new QWidget(Dialog);
layoutWidget->setObjectName(QString::fromUtf8("layoutWidget"));
layoutWidget->setGeometry(QRect(20, 250, 351, 33));
hboxLayout = new QHBoxLayout(layoutWidget);
hboxLayout->setSpacing(6);
hboxLayout->setMargin(0);
hboxLayout->setObjectName(QString::fromUtf8("hboxLayout"));
spacerItem = new QSpacerItem(131, 31, QSizePolicy::Expanding, QSizePolicy::Minimum);
hboxLayout->addItem(spacerItem);
okButton = new QPushButton(layoutWidget);
okButton->setObjectName(QString::fromUtf8("okButton"));
hboxLayout->addWidget(okButton);
cancelButton = new QPushButton(layoutWidget);
cancelButton->setObjectName(QString::fromUtf8("cancelButton"));
hboxLayout->addWidget(cancelButton);
pushButton_MsgBox = new QPushButton(Dialog);
pushButton_MsgBox->setObjectName(QString::fromUtf8("pushButton_MsgBox"));
pushButton_MsgBox->setGeometry(QRect(10, 20, 87, 29));
retranslateUi(Dialog);
QObject::connect(okButton, SIGNAL(clicked()), Dialog, SLOT(accept()));
QObject::connect(cancelButton, SIGNAL(clicked()), Dialog, SLOT(reject()));
QMetaObject::connectSlotsByName(Dialog);
} // setupUi
void retranslateUi(QDialog *Dialog)
{
Dialog->setWindowTitle(QApplication::translate("Dialog", "QT\347\225\214\351\235\242\346\265\213\350\257\225", 0, QApplication::UnicodeUTF8));
okButton->setText(QApplication::translate("Dialog", "OK", 0, QApplication::UnicodeUTF8));
cancelButton->setText(QApplication::translate("Dialog", "Cancel", 0, QApplication::UnicodeUTF8));
pushButton_MsgBox->setText(QApplication::translate("Dialog", "MesssageBox", 0, QApplication::UnicodeUTF8));
Q_UNUSED(Dialog);
} // retranslateUi
};
class ImageDialog:public QDialog //派生类 ImageDialog
{
public:
ImageDialog(QWidget *parent = 0);
private:
Ui_Dialog ui;
private slots:
void aaa() ; // 自定义slots
};
ImageDialog::ImageDialog(QWidget *parent)
: QDialog(parent)
{
ui.setupUi(this);
QObject::connect(ui.pushButton_MsgBox, SIGNAL(clicked()), this,
SLOT(aaa())); // 这里的 aaa()老是无法激活
}
void ImageDialog::aaa()
{
(void) QMessageBox::information(this, tr("No Image Name"),
tr("Please supply a name for the image."), QMessageBox::Cancel);
}
#endif // TEST_QTGUI_H
int main(int argc, char *argv[])
{
QApplication app(argc, argv) ;
ImageDialog ui ;
return ui.exec() ;
}
运行之后提示:
Object::connect: No such slot QDialog::aaa()
Object::connect: (sender name: 'pushButton_MsgBox')
Object::connect: (receiver name: 'Dialog')
[ 此贴被XChinux在2006-09-03 09:53重新编辑 ]