在对话框中,我有一个QLineEdit和一个按钮。我想在按下按钮时为QLineEdit(在其中或在其下)启用工具提示。请给我一个代码段。
答案 0 :(得分:5)
这是一个简单的例子:
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
?
答案 1 :(得分:2)
如果您需要QLineEdit的工具提示,那么问题是什么?只需设置:
myLineEdit->setToolTip("Here is my tool tip");
但是,如果您只需要在按下button
之后显示一些文字,那么另一个解决方案是:创建一个插槽,例如on_myBytton_clicked()
并将其连接到您的按钮。在插槽中,使用位于表单上的QLabel
,QTextEdit
等小部件上的文字执行 setText()功能。
希望有所帮助。