Написал наследника QComboBox
class SqlComboBox : public QComboBox
{
Q_OBJECT
public:
SqlComboBox(QWidget *parent = 0);
bool checkComboText();
int column;
signals:
void insertItemSignal(QString text);
void editingFinished();
protected:
void keyPressEvent(QKeyEvent *e);
};
SqlComboBox::SqlComboBox(QWidget *parent)
: QComboBox(parent)
{
}
void SqlComboBox::keyPressEvent(QKeyEvent *e)
{
if (e->key() == Qt::Key_Return || e->key() == Qt::Key_Enter) {
if (this->checkComboText())
emit editingFinished();
} else
QComboBox::keyPressEvent(e);
}
bool SqlComboBox::checkComboText()
{
if (!lineEdit()->text().isEmpty()) {
const int index =
findText(lineEdit()->text(), Qt::MatchFlags());
if (index == -1) {
const int answer =
QMessageBox::question(this, "Новый элемент",
"Добавить \"" +
lineEdit()->text() +
"\" в список?",
QMessageBox::Yes | QMessageBox::No);
if (answer == QMessageBox::Yes)
{
emit insertItemSignal(lineEdit()->text());
}
this->lineEdit()->setFocus();
this->lineEdit()->selectAll();
return false;
} else {
return true;
}
} else
return false;
return false;
}
в методе checkComboText на строчке
if (!lineEdit()->text().isEmpty()) {
вылетает ошибка
причем подобный метод у меня есть в похожем компоненте, где он без проблем работает....
в чем тут может быть проблема, ума не приложу.... Помогите пожалуйста, если кто знает что не так.....
Как я понимаю указатель на lineEdit пустой... а вот почему он пустой?
В каких случаях он будет возвращать корректный указатель на lineEdit?