В диалоговом окне у меня есть QLineEdit и кнопка. Я хочу включить подсказку для QLineEdit (в ней или под ней), когда я нажимаю кнопку. Пожалуйста, дайте мне фрагмент кода.QT - Как применить QToolTip на QLineEdit
ответ
Вот простой пример:
class MyWidget : public QWidget
{
Q_OBJECT
public:
MyWidget(QWidget* parent = 0) : QWidget(parent)
{
QVBoxLayout* layout = new QVBoxLayout(this);
edit = new QLineEdit(this);
layout->addWidget(edit);
showButton = new QPushButton("Show tool tip", this);
layout->addWidget(showButton);
hideButton = new QPushButton("Hide tool tip", this);
layout->addWidget(hideButton);
connect(showButton, SIGNAL(clicked(bool)), this, SLOT(showToolTip()));
connect(hideButton, SIGNAL(clicked(bool)), this, SLOT(hideToolTip()));
}
public slots:
void showToolTip()
{
QToolTip::showText(edit->mapToGlobal(QPoint()), "A tool tip");
}
void hideToolTip()
{
QToolTip::hideText();
}
private:
QLineEdit* edit;
QPushButton* showButton;
QPushButton* hideButton;
};
Как вы можете видеть, нет простого способа просто включить подсказку некоторого виджета. Вы должны предоставить глобальные координаты QToolTip::showText
.
Другой способ сделать это - создать QHelpEvent
самостоятельно и опубликовать это событие, используя QCoreApplication::postEvent
. Таким образом, вы можете указать текст, который будет отображаться в вашем виджете, используя QWidget::setToolTip
. Тем не менее, вы все равно должны предоставлять глобальные координаты.
Мне действительно интересно, почему вы хотите это сделать, поскольку подсказки инструментов предназначены для отображения только тогда, когда вы наводите указатель мыши на или, когда вы запрашиваете информацию «Что это». Это похоже на плохой дизайн, чтобы использовать его для чего-то другого. Если вы хотите дать сообщение пользователю, почему бы вам не использовать QMessageBox
?
Если вам нужна подсказка для QLineEdit, то в чем проблема? Просто установите:
myLineEdit->setToolTip("Here is my tool tip");
Но если вам нужно только, чтобы показать текст после некоторых button
была нажата, здесь другое решение: создать слот, например on_myBytton_clicked()
и подключить его к кнопке. В слоте делайте setText() со своим текстом на QLabel
, QTextEdit
и т. Д. Виджеты, расположенные на вашей форме.
Надеюсь, что это поможет.
Это не то, что задал ОП. Но вы правы: я также думаю, что лучше использовать «QLabel» вместо подсказки. – Job
Ваш ответ не имеет никакого отношения к моему вопросу. Я спрашиваю, как использовать toolTip !!! – Narek
Итак, вам лучше прочитать о том, как задать правильный вопрос, прежде чем публиковать их ... – mosg
- 1. Qt - Как применить QToolTip на прямоугольник
- 2. QLineEdit Qt в C++ удаления QLineEdit
- 3. QT QLineEdit focusout
- 4. qtooltip показать предложение в одной строке qt
- 5. Qt KeyPress Event on QlineEdit
- 6. Qt 4.5 Фокус не работает на QLineEdit
- 7. Применить qt stylesheet к html элементам tooltip
- 8. Qt Установить цвет фона QLineEdit
- 9. QT Проверка правильности ввода QlineEdit
- 10. Установите QLineEdit focus в Qt
- 11. Qt: Синхронный QLineEdit и QTextEdit
- 12. QToolTip с анимированным gif
- 13. Qt Widget с QLineEdit, как фон
- 14. Qt - Как изменить направление заполнения в QLineEdit?
- 15. QTooltip, который не зависит от мыши
- 16. Qt - динамически добавить QLineEdit в панель
- 17. qt предотвращает расширение QLineEdit в макете
- 18. Qt QLineEdit выборочная проверка в ruby
- 19. Как применить regexp к TextEdit, как в Qt Widgets?
- 20. QT и пользовательский пункт меню (QLineEdit)
- 21. QRegExp для IP-адреса QlineEDit в QT
- 22. Как обнаружить щелчок мышью на QLineEdit
- 23. Позиция отображения QTooltip
- 24. Как разместить значок на QLineEdit?
- 25. QLineEdit и Escape Signal
- 26. Qt: применить изменение шрифта на всей форме
- 27. Как QLineEdit triger QAbstractItemDelegate :: commitData
- 28. Как использовать setValidator() и setInputMask() для QLineEdit в Qt?
- 29. Как уничтожить виджеты на макете qt
- 30. Добавить клик на QLineEdit
Спасибо. Я хочу использовать это, чтобы сообщить пользователю, что QLineEdit будет заполнен состоянием CapsLock ON (для поля пароля). Есть два вопроса: 1) Почему, если я не разделяю это определение класса в файлах .cpp и .h, он дает ошибку компоновщика (некоторые проблемы с vtable)? И как у меня может быть более одного QToolTips, отдельно вызванных в одном классе? Я вижу, вы использовали статические функции, которые вы использовали. – Narek
1: Возможно, потому, что вы не '# включаете 'файл moc. См. Http://stackoverflow.com/questions/3001615/qt-moc-with-implementations-inside-of-header-files/ 2: Я действительно не понимаю ваш вопрос. Вы имеете в виду показывать сразу несколько подсказок? Это невозможно. – Job
Благодарим вас за решение, которое вы разместили. Это здорово! – Tracy