QWidget - add property toolTipDuration
This adds a property that specifies how long a tooltip is displayed. This partly solves: Task-number: QTBUG-1016 Change-Id: Ieea218bbcb869f6b48e72913d967e74fa792f2e2 Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
This commit is contained in:
parent
b11cb96f28
commit
241ba7dc07
@ -242,6 +242,9 @@ QWidgetPrivate::QWidgetPrivate(int version)
|
||||
, graphicsEffect(0)
|
||||
#if !defined(QT_NO_IM)
|
||||
, imHints(Qt::ImhNone)
|
||||
#endif
|
||||
#ifndef QT_NO_TOOLTIP
|
||||
, toolTipDuration(-1)
|
||||
#endif
|
||||
, inheritedFontResolveMask(0)
|
||||
, inheritedPaletteResolveMask(0)
|
||||
@ -8193,7 +8196,7 @@ bool QWidget::event(QEvent *event)
|
||||
#ifndef QT_NO_TOOLTIP
|
||||
case QEvent::ToolTip:
|
||||
if (!d->toolTip.isEmpty())
|
||||
QToolTip::showText(static_cast<QHelpEvent*>(event)->globalPos(), d->toolTip, this);
|
||||
QToolTip::showText(static_cast<QHelpEvent*>(event)->globalPos(), d->toolTip, this, QRect(), d->toolTipDuration);
|
||||
else
|
||||
event->ignore();
|
||||
break;
|
||||
@ -10410,6 +10413,30 @@ QString QWidget::toolTip() const
|
||||
Q_D(const QWidget);
|
||||
return d->toolTip;
|
||||
}
|
||||
|
||||
/*!
|
||||
\property QWidget::toolTipDuration
|
||||
\brief the widget's tooltip duration
|
||||
\since 5.2
|
||||
|
||||
Specifies how long time the tooltip will be displayed, in milliseconds.
|
||||
If the value is -1 (default) the duration is calculated depending on the length of the tooltip.
|
||||
|
||||
\sa toolTip
|
||||
*/
|
||||
|
||||
void QWidget::setToolTipDuration(int msec)
|
||||
{
|
||||
Q_D(QWidget);
|
||||
d->toolTipDuration = msec;
|
||||
}
|
||||
|
||||
int QWidget::toolTipDuration() const
|
||||
{
|
||||
Q_D(const QWidget);
|
||||
return d->toolTipDuration;
|
||||
}
|
||||
|
||||
#endif // QT_NO_TOOLTIP
|
||||
|
||||
|
||||
|
@ -178,6 +178,7 @@ class Q_WIDGETS_EXPORT QWidget : public QObject, public QPaintDevice
|
||||
Q_PROPERTY(bool windowModified READ isWindowModified WRITE setWindowModified DESIGNABLE isWindow)
|
||||
#ifndef QT_NO_TOOLTIP
|
||||
Q_PROPERTY(QString toolTip READ toolTip WRITE setToolTip)
|
||||
Q_PROPERTY(int toolTipDuration READ toolTipDuration WRITE setToolTipDuration)
|
||||
#endif
|
||||
#ifndef QT_NO_STATUSTIP
|
||||
Q_PROPERTY(QString statusTip READ statusTip WRITE setStatusTip)
|
||||
@ -376,6 +377,8 @@ public:
|
||||
#ifndef QT_NO_TOOLTIP
|
||||
void setToolTip(const QString &);
|
||||
QString toolTip() const;
|
||||
void setToolTipDuration(int msec);
|
||||
int toolTipDuration() const;
|
||||
#endif
|
||||
#ifndef QT_NO_STATUSTIP
|
||||
void setStatusTip(const QString &);
|
||||
|
@ -644,6 +644,7 @@ public:
|
||||
QRegion dirty;
|
||||
#ifndef QT_NO_TOOLTIP
|
||||
QString toolTip;
|
||||
int toolTipDuration;
|
||||
#endif
|
||||
#ifndef QT_NO_STATUSTIP
|
||||
QString statusTip;
|
||||
|
@ -39,29 +39,70 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include <QtWidgets>
|
||||
#include <QTest>
|
||||
#include <QDialog>
|
||||
#include <QToolTip>
|
||||
#include <QLabel>
|
||||
#include <QPushButton>
|
||||
#include <QVBoxLayout>
|
||||
|
||||
void showSomeToolTips()
|
||||
class TestDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
TestDialog();
|
||||
protected slots:
|
||||
void showSomeToolTips();
|
||||
};
|
||||
|
||||
void TestDialog::showSomeToolTips()
|
||||
{
|
||||
QPoint p(100 + 20, 100 + 20);
|
||||
|
||||
for (int u = 1; u < 20; u += 5) {
|
||||
QString s = "Seconds: " + QString::number(u);
|
||||
QString s = tr("Seconds: ") + QString::number(u);
|
||||
QToolTip::showText(p, s, 0, QRect(), 1000 * u);
|
||||
QTest::qWait((u + 1) * 1000);
|
||||
}
|
||||
|
||||
QToolTip::showText(p, "Seconds: 2", 0, QRect(), 2000);
|
||||
QToolTip::showText(p, tr("Seconds: 2"), 0, QRect(), 2000);
|
||||
QTest::qWait(3000);
|
||||
|
||||
QToolTip::showText(p, "Standard label", 0, QRect());
|
||||
QToolTip::showText(p, tr("Standard label"), 0, QRect());
|
||||
QTest::qWait(12000);
|
||||
}
|
||||
|
||||
TestDialog::TestDialog()
|
||||
{
|
||||
// Notice that these tool tips will disappear if another tool tip is shown.
|
||||
QLabel *label1 = new QLabel(tr("Tooltip - Only two seconds display"));
|
||||
label1->setToolTip(tr("2 seconds display"));
|
||||
label1->setToolTipDuration(2000);
|
||||
Q_ASSERT(label1->toolTipDuration() == 2000);
|
||||
|
||||
QLabel *label2 = new QLabel(tr("Tooltip - 30 seconds display time"));
|
||||
label2->setToolTip(tr("30 seconds display"));
|
||||
label2->setToolTipDuration(30000);
|
||||
|
||||
QPushButton *pb = new QPushButton(tr("&Test"));
|
||||
pb->setToolTip(tr("Show some tool tips."));
|
||||
Q_ASSERT(pb->toolTipDuration() == -1);
|
||||
connect(pb, SIGNAL(clicked()), this, SLOT(showSomeToolTips()));
|
||||
|
||||
QVBoxLayout *layout = new QVBoxLayout;
|
||||
layout->addWidget(label1);
|
||||
layout->addWidget(label2);
|
||||
layout->addWidget(pb);
|
||||
|
||||
setLayout(layout);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QApplication app(argc, argv);
|
||||
showSomeToolTips();
|
||||
return 0;
|
||||
TestDialog dlg;
|
||||
dlg.show();
|
||||
return app.exec();
|
||||
}
|
||||
|
||||
#include "main.moc"
|
||||
|
Loading…
x
Reference in New Issue
Block a user