Не могу разобраться с combobox и QpushButton, Как сделать кнопочку автивно при выборе элемента? |
Здравствуйте, гость ( Вход | Регистрация )
Не могу разобраться с combobox и QpushButton, Как сделать кнопочку автивно при выборе элемента? |
Andrewshkovskii |
27.12.2008, 16:09
Сообщение
#1
|
Активный участник Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1 |
Сабж. Я только сегодня сел изучать Qt.. но никак не могу понять ,как реализовать сабж.
Допустим есть кнопочка : QPushButton *choose = new QPushButton("Выбрать!"); и выпадающий список : QStringList list; list << " " << "profile 1" << "profile 2" << "profile 3" << "profile 4" << "profile 5"; QComboBox *combobox = new QComboBox; combobox->addItems(list); Я так понимаю, что надо написать фукнцию, которая будет вызываться как сигнал, при выборе хотя бы одного элемента, так? Как её можно реализовать?Какой слот или сигнал есть у комбобокса, возвращающий какое-либо значение, когда выбран элемент? Ещё вопрос : Как сделать в списке пустой элемент?Я имею ввиду не " " - т.к это тоже элемент списка, и в моем случае, при его выборе, кнопка будет активной.Я про пустой не выбираемый элемент. Тоже самое мне надо реализовать для флажкой(QCheckBox).т.е , есть флажок, и таже самая кнопочка. Подскажите, пожалуйста.. |
|
|
Litkevich Yuriy |
27.12.2008, 16:20
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Andrewshkovskii, задачу я не понял. Расскажи без кода, просто на словах, что делает пользователь - что он видит.
Какой слот или сигнал есть у комбобокса, возвращающий какое-либо значение, когда выбран элемент? слот не возвращает значение, а принимает. См. документацию QComboBox подраздел Сигналы
|
|
|
Andrewshkovskii |
27.12.2008, 16:28
Сообщение
#3
|
Активный участник Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1 |
Хорошо, это сейчас полистаю.а что насчет "пустого" элемента?
|
|
|
Litkevich Yuriy |
27.12.2008, 16:34
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Andrewshkovskii |
27.12.2008, 16:36
Сообщение
#5
|
Активный участник Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1 |
Ну..я попробывал через сигнал activated(),
QObject::connect(combobox,SIGNAL(activated(1)),mw,SLOT(show()));, вот так, mw- виджет.== ничего не происходит. Ну пустой элемент в моем понимании - это нулевое значение списка,тоесть НИЧЕГО НЕ ВЫБРАНО. и отображается как пустота в списке.. |
|
|
Litkevich Yuriy |
27.12.2008, 17:06
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
QObject::connect(combobox,SIGNAL(activated(1)),mw,SLOT(show())); тут полная ересь, что за еденичка? Читай про сигналы и слоты.А также про функцию QObject::connect ничего не происходит. на самом деле происходит. чтобы видеть, что происходит, добавь в свой pro-файл такую строку:CONFIG += console сделай qmake make и после запуска приложения у тебя появится консоль, в которую Qt будет сообщать об ошибка времени выполнения связанных либо с сигналами/слотами, либо с метаобъектной информацией, а также о драйверах СУБД. |
|
|
Litkevich Yuriy |
27.12.2008, 18:08
Сообщение
#7
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Andrewshkovskii, если еще не понял ошибку с соединением, глянь в FAQ, набросал наскору руку: Сигналы и слоты (Qt).
|
|
|
Andrewshkovskii |
27.12.2008, 18:28
Сообщение
#8
|
Активный участник Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1 |
Да я щас сижу код свой переписываю, с дуру начал писать без классов, просто сплошняком.щас доперепишу, буду разбираться..
|
|
|
Litkevich Yuriy |
27.12.2008, 18:34
Сообщение
#9
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
с дуру начал писать без классов, просто сплошняком.щас доперепишу, буду разбираться.. для мелких примеров можно и без классов.Замечание: При написании класса разделяй интерфес от реализации на два отдельных файла *.h и *.cpp (иначе прийдется руками инклюдить продукт деятельности MOC'а) |
|
|
Andrewshkovskii |
27.12.2008, 19:01
Сообщение
#10
|
Активный участник Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1 |
Да это я знаю, я на с++ пишу уже 2 года... сегодня сел просто за Qtшечку, и есть некоторые не понятки. Ну там как пример..диалоговое окно, там по критериям надо выбрать веб-почту ...
И так, проблема. Пытаюсь объявить закрытый слот :
Пишу в эклипсе, вот ерор лог : make: *** [release] Error 2 make[1]: *** [release\_.exe] Error 1 release/moc_mail_choose.o:moc_mail_choose.cpp: undefined reference to`Mail_choose::SetChooseButtonProfileEnable()' Не пойму, в чем дело? |
|
|
Текстовая версия | Сейчас: 22.12.2024, 20:27 |