如何在Qt上实现提示对话框

5
我使用了一个包含3列的QTableWidget 第一和第二列是下拉框(combo box) 第三列是QLineEdit
我想要显示一个对话框,类似于Qt函数参数输入时的提示。
例如,输入QString()将会显示一个提示对话框,其中包含1到12的数字和该函数参数的提示。 这与自动完成不同,因为它只会在弹出窗口中显示固定数量的消息。
请提供任何实现此功能的方法。

1
看看Qt Creator本身的源代码怎么样?http://code.qt.io/cgit/qt-creator/qt-creator.git/tree/src - maxik
1
我不太明白你想要什么,但是可以看一下QWidget::setToolTip方法、QToolTip类(提供在任何位置和任何时间显示工具提示)以及QCompleter类。也可以使用带有'Qt::Popup'或Qt::Tooltip标志的自定义QWidget - ilotXXI
1
我赞同@maxik的评论。如果你想知道它是如何完成的,请阅读源代码。 - jonspaceharper
实际上这就是我在提问后正在做的事情。你有什么想法吗?我不知道从哪里开始。我能调试Qt源代码吗? - steiryx
@steiryx,你成功解决了吗?能否分享你的解决方案以帮助其他遇到同样问题的人呢?谢谢!如果你想调试Qt源代码,你需要调试信息。你可以通过为Debug模式编译Qt来获取这些信息。 - Mailerdaimon
3个回答

1

所有的QWidget对象都有函数void setToolTip(const QString &),因此你可以这样做:

QLineEdit *lineEdit= new QLineEdit();
lineEdit->setToolTip("Example");

此外,您还可以使用类{{link1:QToolTip}}。


谢谢您的输入。我会研究一下,但我首先想到的是它只会在悬停时触发,而不是在操作(例如键入QLineEdit对象)时触发。 - steiryx
根据文档,如果您想控制工具提示的行为,可以拦截 event() 函数并捕获 QEvent::ToolTip 事件。 - Tarod

0

对于 QLineEdit,通常的做法是使用 .setPlaceholderText( const QString & )。也许这对你的应用程序有用。


设置此属性使行编辑显示灰色占位符文本,只要行编辑为空,就会显示该文本。我认为这不会显示对话框,它只会在QLineEdit对象内显示文本。我想在开始在QLineEdit对象上输入时显示类似对话框的东西。 - steiryx

0

要在小部件位置显示工具提示,可以执行以下操作:

QToolTip::showText( widget->mapToGlobal( QPoint( 0, 0 ) ), tooltipText);

在这里,您可以输入任何位置。

如果您想显示彩色文本,请参见 SO 上的 this answer

请查看文档以获取更详细的说明。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接