Кнопка по умолчанию. |
Здравствуйте, гость ( Вход | Регистрация )
Кнопка по умолчанию. |
JuryS1806 |
10.11.2009, 21:26
Сообщение
#1
|
Студент Группа: Участник Сообщений: 93 Регистрация: 21.10.2009 Из: Нижний Новгород Пользователь №: 1168 Спасибо сказали: 9 раз(а) Репутация: 0 |
Здравствуйте. доброго времени суток. Прошу помочь, если кто знает, как можно назначить кнопку по умолчанию. После того как будет написан текст в QLineEdit.
Вот до чего я уже дошел: void MainWindow::textChangedMacro(const QString &newText) { ExecuteButton->setEnabled(!newText.isEmpty()); //Здесь делаю кнопку включенной при изменении текста в А дальше не знаю, как сделать эту кнопку исполняемой при нажатии Enter, т.е. кнопкой по умолчанию } При том что в примерах такие программы есть. QtDBusChat к примеру. И все здесь супер работает ! ТОЛЬКО УЖЕ НЕДЕЛЮ не разберусь как ! Прошу помочь. ExecuteButton->raise(); не помогает ExecuteButton->focusWidget(); тоже не помогает.! |
|
|
kwisp |
10.11.2009, 21:33
Сообщение
#2
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
почему то никогда не задумывался над этим
просто соединял необходимый слот с сигналом ентера в лайнедите. а по какому событию ты считаешь что текст написан ? |
|
|
ViGOur |
10.11.2009, 21:37
Сообщение
#3
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Посмотри: QPushButton::setAutoDefault
|
|
|
JuryS1806 |
10.11.2009, 22:07
Сообщение
#4
|
Студент Группа: Участник Сообщений: 93 Регистрация: 21.10.2009 Из: Нижний Новгород Пользователь №: 1168 Спасибо сказали: 9 раз(а) Репутация: 0 |
ExecuteButton->setDisabled(1); //По умолчанию кнопка Выполнить отключена
connect(lineEdit, SIGNAL(textChanged(QString)),this, SLOT(textChangedMacro(QString))); //Событие на изменение строки команды а затем следует то чего я писал сверху. Кнопка становится активной, если хотя бы один символ напечатать. Только вот по Enter'y ничего не происходит, хотя если на кнопку нахать мышью, соответственно работает сигнал clicked. А как Вы на Enter событие вешаете ? Эта чудо-кнопка ExecuteButton создана в Виджете searchlineedit. Этот виджет напоминает строку ввода адреса в браузере, слева картиночка, затем строка и в конце кнопка. У моей замечательной кнопки ExecuteButton нет SetAutoDefault. Есть только SetAutoRepeat, setAutoExclusive, setAutoFillBackground, SetAutoRepeatDelay, SetAutoRepeatInterval ! ExecuteButton->setDisabled(1); //По умолчанию кнопка Выполнить отключена connect(lineEdit, SIGNAL(textChanged(QString)),this, SLOT(textChangedMacro(QString))); //Событие на изменение строки команды а затем следует то чего я писал сверху. Кнопка становится активной, если хотя бы один символ напечатать. Только вот по Enter'y ничего не происходит, хотя если на кнопку нахать мышью, соответственно работает сигнал clicked. А как Вы на Enter событие вешаете ? Эта чудо-кнопка ExecuteButton создана в Виджете searchlineedit. Этот виджет напоминает строку ввода адреса в браузере, слева картиночка, затем строка и в конце кнопка. У моей замечательной кнопки ExecuteButton нет SetAutoDefault. Есть только SetAutoRepeat, setAutoExclusive, setAutoFillBackground, SetAutoRepeatDelay, SetAutoRepeatInterval ! QAbstractButton. Это виджет, в котором создана моя замечательная кнопка. И судя по всему, и умолчание на эту кнопку включается другими методами !!!! Гораздо легче узнать, как обработать событие на нажатие Enter. Подскажите ??? Нашел выход из положения ! Тему можно считать закрытой, спасибо за участие. ExecuteButton->setShortcut(tr("Enter")); |
|
|
ViGOur |
10.11.2009, 22:13
Сообщение
#5
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Как вариант:
|
|
|
JuryS1806 |
10.11.2009, 23:00
Сообщение
#6
|
Студент Группа: Участник Сообщений: 93 Регистрация: 21.10.2009 Из: Нижний Новгород Пользователь №: 1168 Спасибо сказали: 9 раз(а) Репутация: 0 |
Тоже вариант, сейчас попробую. А вот интересно, когда я записал setShortcut(tr("Enter")). Все работает отлично, только Enter-ом с цифровой клавиатуры, а основной Enter молчит. Значит все-таки это разные клавиши ! И как интересно все-таки их установить одновременно ...
Return - клавиша Enter. Enter - та же клавиша, только с цифровой клавы. А как одновременно их сделать ??? Где-то на форуме об этом я уже читал. Сейчас попробую поискать. Сделал так: ExecuteButton->setShortcut(tr("Return")); //Начначаю клавишу Enter (основную) А для обработки команды с Enter'a цифровой клавиатуры: void MainWindow::keyPressEvent(QKeyEvent *pKeyEvent) { if( pKeyEvent->key() == Qt::Key_Enter) { sendClickedMacroExec(); } } Вот и все получилось общими усилиями, спасибо за помощь. Надеюсь, кому-нибудь пригодится подобный мануал по назначению горячих клавиш !!! |
|
|
Litkevich Yuriy |
11.11.2009, 3:59
Сообщение
#7
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
JuryS1806 |
11.11.2009, 7:54
Сообщение
#8
|
Студент Группа: Участник Сообщений: 93 Регистрация: 21.10.2009 Из: Нижний Новгород Пользователь №: 1168 Спасибо сказали: 9 раз(а) Репутация: 0 |
Да было бы не плохо так, только у меня не обычный виджет. А searchlineedit. Думаю из за этого я так с ним завис. Но все равно, спасибо за подсказку.
Вот что получилось у меня в итоге. Мне нравится, как работает !
Причина редактирования: используй тэг code
|
|
|
Litkevich Yuriy |
11.11.2009, 8:46
Сообщение
#9
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
kwisp |
11.11.2009, 12:50
Сообщение
#10
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
вообще еще проще делал
|
|
|
Текстовая версия | Сейчас: 27.12.2024, 4:43 |