- 论坛徽章:
- 0
|
#include <qapplication.h>
#include <qwidget.h>
#include <qlistview.h>
#include <qmessagebox.h>
class MyMainWindow : public QWidget
{
Q_OBJECT
public:
MyMainWindow();
private:
QListView *pListView;
QListViewItem *pItem;
QListViewItem *pTopic1;
QListViewItem *pTopic2;
QListViewItem *pTopic3;
QMessageBox *pBox;
public slots:
void ShowDescription();
};
void MyMainWindow::ShowDescription()
{
pBox = new QMessageBox("Book Info",
"Here, we could show some short information",
QMessageBox::Information,
QMessageBox::Ok,
0,
0);
pBox->show();
}
MyMainWindow::MyMainWindow()
{
setGeometry(150, 150, 800, 600);
pListView = new QListView(this);
pListView->setGeometry(0, 0, 400, 400);
pListView->setRootIsDecorated(true);
pListView->addColumn("Book");
pListView->addColumn("Sold Copies");
pListView->addColumn("Price");
pTopic1 = new QListViewItem(pListView, "Topic 1");
pTopic2 = new QListViewItem(pListView, "Topic 2");
pTopic3 = new QListViewItem(pListView, "Topic 3");
pItem = new QListViewItem(pTopic1, "Book 1", "21000", "$29.99");
pItem = new QListViewItem(pTopic1, "Book 2", "21000", "$29.99");
pItem = new QListViewItem(pTopic1, "Book 3", "21000", "$29.99");
pItem = new QListViewItem(pTopic2, "Book 4", "22000", "$39.99");
pItem = new QListViewItem(pTopic2, "Book 5", "22000", "$39.99");
pItem = new QListViewItem(pTopic2, "Book 6", "22000", "$39.99");
pItem = new QListViewItem(pTopic3, "Book 7", "23000", "$49.99");
pItem = new QListViewItem(pTopic3, "Book 8", "23000", "$49.99");
pItem = new QListViewItem(pTopic3, "Book 9", "24000", "$49.99");
connect(pListView, SIGNAL(doubleClicked(QListViewItem *)), this, SLOT(ShowDescription()));
}
int main(int argc, char **argv)
{
QApplication a(argc, argv);
MyMainWindow w;
a.setMainWidget(&w);
w.show();
return a.exec();
}
上面是完整的程序,我只是按着书本上的例子,做了一个响应双击事件的槽函数而已!编译的时候居然报构造函数的错误?不解!注释掉Q_OBJECT宏程序通过,当然这样的话槽函数也办法了激活了!大家给看看,是什么地方出的错?谢谢 |
|