У меня есть такой код:Qt QObject :: connnect() функция не может быть подключен
class MyListView : public QListView
{
public:
MyListView();
~MyListView();
public slots:
void insertData();
void deleteData();
void showData();
private:
QStringListModel *model;
QListView *listView;
};
А конструктор, как:
MyListView :: MyListView()
{
QStringList data;
data << "Letter A" << "Letter B" << "Letter C";
model = new QStringListModel;
model->setStringList(data);
listView = new QListView;
listView->setModel(model);
/* the three buttons */
QPushButton *insertBtn = new QPushButton(QObject::tr("insert"),this);
QObject::connect(insertBtn,SIGNAL(clicked()),this,SLOT(insertData()));
QPushButton *deleteBtn = new QPushButton(QObject::tr("delete"),this);
QObject::connect(deleteBtn,SIGNAL(clicked()),this,SLOT(deleteData()));
QPushButton *showBtn = new QPushButton(QObject::tr("show"),this);
QObject::connect(showBtn,SIGNAL(clicked()),this,SLOT(showData()));
/* layout */
QHBoxLayout *btnLayout = new QHBoxLayout;
btnLayout->addWidget(insertBtn);
btnLayout->addWidget(deleteBtn);
btnLayout->addWidget(showBtn);
QVBoxLayout *mainLayout = new QVBoxLayout(this);
mainLayout->addWidget(listView);
mainLayout->addLayout(btnLayout);
setLayout(mainLayout);
}
Так что я хочу, чтобы подключить кнопки на функции слот, но когда я скомпилировать его, я получил сообщение об ошибке, как:
QObject::connect: No such slot QListView::insertData()
Я думаю, что проблема исходит от подключения F unction, в котором «это» не является правильным указателем, любая помощь? Заранее спасибо.
Похоже QListView отличается от QObject , поскольку, когда я добавляю «Q_OBJECT», как вы рекомендовали, я получил новую ошибку: «неопределенная ссылка на« vtable для MyListView ». – zhoudingjiang
Похоже на несвязанную мне проблему, вы можете захотеть повторно обновить код – tinkertime
У вас есть _run qmake_ после того, как вы добавили макрос Q_OBJECT? – Zlatomir