我代码如下:
/ test_qtgui.h 用uic-qt4 生成的头文件
#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()));
QObject::connect(pushButton_MsgBox, SIGNAL(clicked()), Dialog,
SLOT(testMesssageBox())) ;
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
};
namespace Ui {
class Dialog: public Ui_Dialog {};
} // namespace Ui
#endif // TEST_QTGUI_H
// message_box.h 自定义 SLOTS
#include "test_qtgui.h"
class ImageDialog:public QDialog
{
Q_OBJECT
public:
ImageDialog(QWidget *parent = 0);
private:
Ui::Dialog ui;
private slots:
void checkValues(); // 这个SLOTS 无法弹出QMessageBox
};
// message_box.cpp
#include "message_box.h"
#include <QMessageBox>
ImageDialog::ImageDialog(QWidget *parent)
: QDialog(parent)
{
ui.setupUi(this);
connect(ui.pushButton_MsgBox, SIGNAL(clicked()), this, SLOT(checkValues()));
}
void ImageDialog::checkValues()
{
QMessageBox::information(this, tr("No Image Name"),
tr("Please supply a name for the image."), QMessageBox::Cancel);
}
// main.cpp
#include "test_qtgui.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QDialog *window = new QDialog;
Ui::Dialog ui;
ui.setupUi(window);
window->show();
return app.exec();
}
[ 此贴被XChinux在2006-09-03 15:27重新编辑 ]