Qt:如何设置"?" QWidget的按钮?

时间:2015-09-07 13:43:34

标签: c++ qt qwidget

在像QLabel这样的QWidget中,我们如何设置"?"按钮,这样当点击(或悬停)时,它应显示一些帮助文本。

2 个答案:

答案 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());