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)
|
, graphicsEffect(0)
|
||||||
#if !defined(QT_NO_IM)
|
#if !defined(QT_NO_IM)
|
||||||
, imHints(Qt::ImhNone)
|
, imHints(Qt::ImhNone)
|
||||||
|
#endif
|
||||||
|
#ifndef QT_NO_TOOLTIP
|
||||||
|
, toolTipDuration(-1)
|
||||||
#endif
|
#endif
|
||||||
, inheritedFontResolveMask(0)
|
, inheritedFontResolveMask(0)
|
||||||
, inheritedPaletteResolveMask(0)
|
, inheritedPaletteResolveMask(0)
|
||||||
@ -8193,7 +8196,7 @@ bool QWidget::event(QEvent *event)
|
|||||||
#ifndef QT_NO_TOOLTIP
|
#ifndef QT_NO_TOOLTIP
|
||||||
case QEvent::ToolTip:
|
case QEvent::ToolTip:
|
||||||
if (!d->toolTip.isEmpty())
|
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
|
else
|
||||||
event->ignore();
|
event->ignore();
|
||||||
break;
|
break;
|
||||||
@ -10410,6 +10413,30 @@ QString QWidget::toolTip() const
|
|||||||
Q_D(const QWidget);
|
Q_D(const QWidget);
|
||||||
return d->toolTip;
|
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
|
#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)
|
Q_PROPERTY(bool windowModified READ isWindowModified WRITE setWindowModified DESIGNABLE isWindow)
|
||||||
#ifndef QT_NO_TOOLTIP
|
#ifndef QT_NO_TOOLTIP
|
||||||
Q_PROPERTY(QString toolTip READ toolTip WRITE setToolTip)
|
Q_PROPERTY(QString toolTip READ toolTip WRITE setToolTip)
|
||||||
|
Q_PROPERTY(int toolTipDuration READ toolTipDuration WRITE setToolTipDuration)
|
||||||
#endif
|
#endif
|
||||||
#ifndef QT_NO_STATUSTIP
|
#ifndef QT_NO_STATUSTIP
|
||||||
Q_PROPERTY(QString statusTip READ statusTip WRITE setStatusTip)
|
Q_PROPERTY(QString statusTip READ statusTip WRITE setStatusTip)
|
||||||
@ -376,6 +377,8 @@ public:
|
|||||||
#ifndef QT_NO_TOOLTIP
|
#ifndef QT_NO_TOOLTIP
|
||||||
void setToolTip(const QString &);
|
void setToolTip(const QString &);
|
||||||
QString toolTip() const;
|
QString toolTip() const;
|
||||||
|
void setToolTipDuration(int msec);
|
||||||
|
int toolTipDuration() const;
|
||||||
#endif
|
#endif
|
||||||
#ifndef QT_NO_STATUSTIP
|
#ifndef QT_NO_STATUSTIP
|
||||||
void setStatusTip(const QString &);
|
void setStatusTip(const QString &);
|
||||||
|
@ -644,6 +644,7 @@ public:
|
|||||||
QRegion dirty;
|
QRegion dirty;
|
||||||
#ifndef QT_NO_TOOLTIP
|
#ifndef QT_NO_TOOLTIP
|
||||||
QString toolTip;
|
QString toolTip;
|
||||||
|
int toolTipDuration;
|
||||||
#endif
|
#endif
|
||||||
#ifndef QT_NO_STATUSTIP
|
#ifndef QT_NO_STATUSTIP
|
||||||
QString statusTip;
|
QString statusTip;
|
||||||
|
@ -39,29 +39,70 @@
|
|||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include <QtWidgets>
|
|
||||||
#include <QTest>
|
#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);
|
QPoint p(100 + 20, 100 + 20);
|
||||||
|
|
||||||
for (int u = 1; u < 20; u += 5) {
|
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);
|
QToolTip::showText(p, s, 0, QRect(), 1000 * u);
|
||||||
QTest::qWait((u + 1) * 1000);
|
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);
|
QTest::qWait(3000);
|
||||||
|
|
||||||
QToolTip::showText(p, "Standard label", 0, QRect());
|
QToolTip::showText(p, tr("Standard label"), 0, QRect());
|
||||||
QTest::qWait(12000);
|
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[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
QApplication app(argc, argv);
|
QApplication app(argc, argv);
|
||||||
showSomeToolTips();
|
TestDialog dlg;
|
||||||
return 0;
|
dlg.show();
|
||||||
|
return app.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#include "main.moc"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user