crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Наследование от QComboBox
AntonH851
  опции профиля:
сообщение 23.3.2010, 16:13
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 66
Регистрация: 20.2.2010
Из: Шебекино
Пользователь №: 1475

Спасибо сказали: 1 раз(а)




Репутация:   0  


Добрый день!

Написал наследника 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?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 24.3.2010, 9:42
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(AntonH851 @ 24.3.2010, 11:33) *
и опять ошибка..
какая ошибка?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AntonH851
  опции профиля:
сообщение 24.3.2010, 10:05
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 66
Регистрация: 20.2.2010
Из: Шебекино
Пользователь №: 1475

Спасибо сказали: 1 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 24.3.2010, 9:42) *
Цитата(AntonH851 @ 24.3.2010, 11:33) *
и опять ошибка..
какая ошибка?




вот в этом месте файла qobject_p.h
inline bool QObjectPrivate::isSignalConnected(uint signal_index) const
{
    return signal_index >= sizeof(connectedSignals) * 8
        || qt_signal_spy_callback_set.signal_begin_callback
        || qt_signal_spy_callback_set.signal_end_callback
        || (connectedSignals[signal_index >> 5] & (1 << (signal_index & 0x1f)));
}


ошибка возникает при попытке выполнить emit insertItemSignal(text);

и почему то в консоли приложения выдает вот это:
Object::connect: No such signal SqlComboBox::insertItemSignal(QString) in MainWindowDelegates\gtdcombodelegate.cpp:35



Цитата(AntonH851 @ 24.3.2010, 9:54) *
и почему то в консоли приложения выдает вот это:
Object::connect: No such signal SqlComboBox::insertItemSignal(QString) in MainWindowDelegates\gtdcombodelegate.cpp:35


ой нет, это понятно...

вот еще что выдает
Lowest section in C:\WINDOWS\system32\odbcint.dll is .rsrc at 1f841000
Lowest section in C:\WINDOWS\system32\xpsp2res.dll is .rsrc at 00011000
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.12.2024, 4:46