Автор: AntonH851 11.3.2010, 16:11
Привет!
есть такая проблема:
мне нужен QComboBox который при попытке добавить в список новое значение выдавал сигнал, который я уже бы обрабатывал
своим слотом.
написал вот такой код:
SqlComboBox.h
#include <QtGui>
class SqlComboBox : public QComboBox
{
Q_OBJECT
public:
SqlComboBox(QWidget *parent = 0);
void insertItem(const QString &text, int index = -1);
signals:
void insertItemSignal(QString text);
};
SqlComboBox.cpp
#include "SqlComboBox.h"
#include <QMessageBox>
SqlComboBox::SqlComboBox(QWidget *parent)
: QWidget(parent)
{
}
void SqlComboBox::insertItem(const QString &text, int index)
{
int result =
QMessageBox::question(this, tr("Новый элемент"),
tr("Подтвердите вставку \"") + text +
tr(" в список"),
QMessageBox::Ok, QMessageBox::Cancel);
if (result == QMessageBox::Yes)
{
emit insertItemSignal(text);
}
}
при попытке компиляции выдает такую ошибку:
Цитата
C:/QP/SqlComboBox/SqlComboBox.cpp:5: error: type 'QWidget' is not a direct base of 'SqlComboBox'
Впервые сталкиваюсь с таким делом (в смысле наследование компонента), поэтому не очень представляю что нужно делать,
подскажите что у меня не так пожалуйста. Спасибо заранее
Автор: kwisp 11.3.2010, 16:25
Цитата(AntonH851 @ 11.3.2010, 16:11)
: QWidget(parent)
!!!
от чего наследуешься?
Цитата(AntonH851 @ 11.3.2010, 16:11)
class SqlComboBox : public QComboBox
Цитата(AntonH851 @ 11.3.2010, 16:11)
SqlComboBox::SqlComboBox(QWidget *parent) : QWidget(parent)
найди одно отличие!
Автор: BRE 11.3.2010, 16:28
SqlComboBox::SqlComboBox(QWidget *parent)
: QComboBox(parent)
{
}
Автор: AntonH851 11.3.2010, 16:38
Цитата(kwisp @ 11.3.2010, 16:25)
Цитата(AntonH851 @ 11.3.2010, 16:11)
: QWidget(parent)
!!!
от чего наследуешься?
Цитата(AntonH851 @ 11.3.2010, 16:11)
class SqlComboBox : public QComboBox
Цитата(AntonH851 @ 11.3.2010, 16:11)
SqlComboBox::SqlComboBox(QWidget *parent) : QWidget(parent)
найди одно отличие!
написал
SqlComboBox::SqlComboBox(QWidget *parent)
: QComboBox(parent)
{
}
при компиляции получаю следующее:
Цитата
debug/SqlComboBox.o: In function `SqlComboBox':
C:\QP\SqlComboBox/SqlComboBox.cpp:5: undefined reference to `vtable for SqlComboBox'
C:\QP\SqlComboBox/SqlComboBox.cpp:5: undefined reference to `vtable for SqlComboBox'
C:\QP\SqlComboBox/SqlComboBox.cpp:5: undefined reference to `vtable for SqlComboBox'
C:\QP\SqlComboBox/SqlComboBox.cpp:5: undefined reference to `vtable for SqlComboBox'
debug/SqlComboBox.o:C:\QP\SqlComboBox/SqlComboBox.cpp:19: undefined reference to `SqlComboBox::insertItemSignal(QString)'
debug/SqlComboBox.o:C:\QP\SqlComboBox/SqlComboBox.h:8: undefined reference to `SqlComboBox::staticMetaObject'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [debug\SqlComboBox.exe] Error 1
mingw32-make: *** [debug] Error 2
Завершено с кодом 2.
Автор: kwisp 11.3.2010, 17:13
http://www.linux.org.ru/forum/development/2236791;jsessionid=18DFC518A06F153B1A8B36EE52E61A35