在像QLabel这样的QWidget中,我们如何设置"?"按钮,这样当点击(或悬停)时,它应显示一些帮助文本。
答案 0 :(得分:0)
在悬停QWidget时显示帮助的最简单方法:setToolTip(QString)和setToolTipDuration(int)。 如果你想要一个“?”按钮,只需实现自己的QWidget。然后通过UI设计师或直接在你的代码中添加QPushButton和QLabel布局,并在点击()时在光标位置显示带有帮助文本的QLabel。像这样:
{
// Constructor
...
m_mainLabel = new QLabel("Main text");
m_button = new QPushButton("?");
m_helpLabel = new QLabel("Help text");
connect(m_button, SIGNAL(clicked(bool)),
this, SLOT(slotShowOrHideHelpLabel(bool)));
QHBoxLayout *hBoxLayout = new QHBoxLayout;
hBoxLayout->addWidget(m_mainLabel);
hBoxLayout->addWidget(m_button);
setLayout(hBoxLayout);
}
void slotShowOrHideHelpLabel(bool showHelpLabel)
{
if (showHelpLabel)
{
m_helpLabel->show();
m_helpLabel->move(QCursor::pos());
}
else
{
m_helpLabel->hide();
}
}
答案 1 :(得分:0)
您也可以使用QMenu代替QPushButton + QLabel。
// Constructor
setContextMenuPolicy(Qt::CustomContextMenu);
connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotCustomMenu(QPoint)));
// slotCustomMenu(QPoint)
QMenu menu(this);
menu.addAction(this->toolTip());
menu.addAction(this->whatsThis());
menu.exec(QCursor::pos());