30 #include <QtTest/private/qtesthelpers_p.h>
32 #include <private/qguiapplication_p.h>
33 #include <QPushButton>
34 #include <QMainWindow>
37 #include <QToolButton>
39 #include <QListWidget>
40 #include <QWidgetAction>
48 #include <QStyleHints>
52 #include <qpa/qplatformtheme.h>
53 #include <qpa/qplatformintegration.h>
83 void cleanupTestCase();
87 void addActionsAndClear();
88 void addActionsConnect();
90 void keyboardNavigation_data();
91 void keyboardNavigation();
93 void overrideMenuAction();
95 void widgetActionFocus();
96 void mouseActivation();
98 void submenuTearOffDontClose();
99 void layoutDirection();
101 void task208001_stylesheet();
102 void activeSubMenuPosition();
103 void activeSubMenuPositionExec();
104 void task242454_sizeHint();
105 void task176201_clear();
106 void task250673_activeMultiColumnSubMenuPosition();
107 void task256918_setFont();
109 void task258920_mouseBorder();
110 void setFixedWidth();
111 void deleteActionInTriggered();
112 void pushButtonPopulateOnAboutToShow();
113 void QTBUG7907_submenus_autoselect();
114 void QTBUG7411_submenus_activate();
115 void QTBUG30595_rtl_submenu();
116 void QTBUG20403_nested_popup_on_shortcut_trigger();
117 void QTBUG47515_widgetActionEnterLeave();
118 void QTBUG_89082_actionTipsHide();
119 void QTBUG8122_widgetActionCrashOnClose();
120 void widgetActionTriggerClosesMenu();
121 void transientParent();
123 void QTBUG_10735_crashWithDialog();
125 void QTBUG_37933_ampersands_data();
126 void QTBUG_37933_ampersands();
128 void click_while_dismissing_submenu();
130 void QTBUG_56917_wideMenuSize();
131 void QTBUG_56917_wideMenuScreenNumber();
132 void QTBUG_56917_wideSubmenuScreenNumber();
133 void menuSize_Scrolling_data();
134 void menuSize_Scrolling();
135 void tearOffMenuNotDisplayed();
136 void QTBUG_61039_menu_shortcuts();
137 void screenOrientationChangedCloseMenu();
142 void onStatusMessageChanged(
const QString &);
143 void onStatusTipTimer();
146 void createActions();
147 QMenu *menus[2], *lastMenu;
148 enum { num_builtins = 10 };
149 QAction *activated, *highlighted, *builtins[num_builtins];
151 bool m_onStatusTipTimerExecuted;
155 void tst_QMenu::getSetCheck()
178 : m_onStatusTipTimerExecuted(
false)
187 for (
int i = 0;
i < num_builtins;
i++)
189 for (
int i = 0;
i < 2;
i++) {
198 for (
int i = 0;
i < 2;
i++)
200 for (
int i = 0;
i < num_builtins;
i++) {
201 bool menuAction =
false;
202 for (
int j = 0;
j < 2; ++
j)
203 if (menus[
j]->menuAction() == builtins[
i])
214 activated = highlighted = 0;
216 m_onStatusTipTimerExecuted =
false;
219 void tst_QMenu::createActions()
222 builtins[0] =
new QAction(
"New", 0);
233 builtins[2]->
setText(
"&Open..");
234 builtins[8] =
new QAction(
"Close", 0);
236 builtins[9] =
new QAction(
"Quit", 0);
242 builtins[3] =
new QAction(
"Open &as..", 0);
246 builtins[4] =
new QAction(
"Save", 0);
252 builtins[5] =
new QAction(
"Sa&ve as..", 0);
262 builtins[7] =
new QAction(
"Prin&t", 0);
269 lastMenu = qobject_cast<QMenu*>(sender());
275 lastMenu = qobject_cast<QMenu*>(sender());
283 void tst_QMenu::addActionsAndClear()
295 template <
typename T>
298 operator const T()
const {
return t; }
299 operator T() {
return t; }
302 void tst_QMenu::addActionsConnect()
314 const auto check = [&](
auto &...args) {
335 const auto check1 = [&](
auto &
arg,
auto &...args) {
337 check(std::as_const(
arg),
args...);
339 const auto check2 = [&](
auto &
arg1,
auto &
arg2,
auto &...args) {
344 const auto check3 = [&](
auto &
arg1,
auto &
arg2,
auto &
arg3) {
351 #ifndef QT_NO_SHORTCUT
353 check2(
text, keySequence);
355 #if QT_DEPRECATED_SINCE(6, 4)
375 void tst_QMenu::mouseActivation()
378 topLevel.resize(300, 200);
379 centerOnScreen(&topLevel);
383 menu.
move(topLevel.geometry().topRight() + QPoint(50, 0));
396 QMenu submenu(
"Menu");
397 submenu.addAction(
"action");
399 menubar.
move(topLevel.geometry().topRight() + QPoint(300, 0));
415 void tst_QMenu::keyboardNavigation_data()
417 QTest::addColumn<Qt::Key>(
"key");
418 QTest::addColumn<Qt::KeyboardModifiers>(
"modifiers");
419 QTest::addColumn<int>(
"expected_action");
420 QTest::addColumn<int>(
"expected_menu");
421 QTest::addColumn<bool>(
"init");
422 QTest::addColumn<bool>(
"expected_activated");
423 QTest::addColumn<bool>(
"expected_highlighted");
448 void tst_QMenu::keyboardNavigation()
451 QFETCH(Qt::KeyboardModifiers, modifiers);
452 QFETCH(
int, expected_action);
453 QFETCH(
int, expected_menu);
455 QFETCH(
bool, expected_activated);
456 QFETCH(
bool, expected_highlighted);
462 lastMenu->
popup(QPoint(0, 0));
465 QTest::keyClick(lastMenu,
key, modifiers);
466 if (expected_activated) {
470 QCOMPARE(activated, builtins[expected_action]);
472 QEXPECT_FAIL(
"shortcut0",
"QTBUG-22449: QMenu doesn't remove highlight if a menu item is activated by a shortcut",
Abort);
474 QCOMPARE(menus[expected_menu]->activeAction(),
nullptr);
476 QCOMPARE(menus[expected_menu]->activeAction(), builtins[expected_action]);
479 if (expected_highlighted)
480 QCOMPARE(menus[expected_menu]->activeAction(), highlighted);
491 void tst_QMenu::focus()
500 QSKIP(
"Computer is currently set up to NOT tab to all widgets,"
501 " this test assumes you can tab to all widgets");
525 void tst_QMenu::overrideMenuAction()
528 QSKIP(
"Window activation is not supported");
533 w.menuBar()->setNativeMenuBar(
false);
537 w.menuBar()->addAction(aFileMenu);
540 QAction *menuaction =
m->menuAction();
542 aFileMenu->setMenu(
m);
547 #if QT_CONFIG(shortcut) && !defined(Q_OS_DARWIN)
549 aQuit->setShortcut(QKeySequence(
"Ctrl+X"));
574 void tst_QMenu::statusTip()
583 a.setStatusTip(
"main action");
586 subact.setStatusTip(
"sub action");
587 m.addAction(&subact);
608 QVERIFY(m_onStatusTipTimerExecuted);
628 m_onStatusTipTimerExecuted =
true;
631 void tst_QMenu::widgetActionFocus()
636 for (
int i = 1;
i<3 ;
i++)
641 m.setActiveAction(wa);
643 QAction *menuitem1=
m.addAction(
"menuitem1");
644 QAction *menuitem2=
m.addAction(
"menuitem2");
674 static QMenu *getTornOffMenu()
677 if (
w->isVisible() &&
w->inherits(
"QTornOffMenu"))
678 return static_cast<QMenu *
>(
w);
683 void tst_QMenu::tearOff()
686 QSKIP(
"Window activation is not supported");
707 const int tearOffOffset = mm.fw + mm.vmargin + mm.tearOffHeight / 2;
735 torn = getTornOffMenu();
749 torn = getTornOffMenu();
758 void tst_QMenu::submenuTearOffDontClose()
761 QSKIP(
"Window activation is not supported");
786 const QPoint submenuPos(submenuRect.topLeft() + QPoint(3, 3));
790 QVERIFY(QTest::qWaitFor([&]() {
return submenu->
window()->windowHandle(); }));
807 void tst_QMenu::layoutDirection()
811 win.resize(300, 200);
812 centerOnScreen(&
win);
816 menu.
move(
win.geometry().topRight() + QPoint(50, 0));
823 menu.
move(
win.geometry().topRight() + QPoint(50, 0));
836 void tst_QMenu::task208001_stylesheet()
840 main.setStyleSheet(
"QMenu [title =\"File\"] { color: red;}");
841 main.menuBar()->addMenu(
"File");
844 void tst_QMenu::activeSubMenuPosition()
849 sub->addAction(
"Sub-Item1");
850 QAction *subAction =
sub->addAction(
"Sub-Item2");
858 main->setActiveAction(menuAction);
859 sub->setActiveAction(subAction);
860 main->popup(QPoint(200,200));
883 m_subMenu =
addMenu(
"Submenu");
884 m_subAction = m_subMenu->
addAction(
"Sub-Item1");
900 if (
e->timerId() == m_timerId) {
901 switch (m_timerTick++) {
919 void tst_QMenu::activeSubMenuPositionExec()
923 QSKIP(
"Android: This hangs. Figure out why.");
929 void tst_QMenu::task242454_sizeHint()
933 QSKIP(
"Android: This hangs. Figure out why.");
951 void tst_QMenu::task176201_clear()
961 void tst_QMenu::task250673_activeMultiColumnSubMenuPosition()
973 QSKIP(
"the style doesn't support multiple columns, it makes the menu scrollable");
976 sub.addAction(
"Sub-Item1");
977 QAction *subAction =
sub.addAction(
"Sub-Item2");
980 main.addAction(
"Item 1");
982 main.popup(QPoint(200,200));
985 while (
main.columnCount() < 2) {
990 main.setActiveAction(menuAction);
991 sub.setActiveAction(subAction);
999 QVERIFY((
sub.geometry().left() - subMenuOffset + 5) <
main.geometry().right());
1002 void tst_QMenu::task256918_setFont()
1009 centerOnScreen(&
menu, QSize(120, 40));
1014 void tst_QMenu::menuSizeHint()
1018 for (
auto str : {
"trer",
"ezrfgtgvqd",
"sdgzgzerzerzer",
"eerzertz",
"er"})
1039 QSize resSize = QSize(
result.x(),
result.y()) +
result.size() + QSize(hmargin +
cm.right() + panelWidth, vmargin +
cm.top() + panelWidth);
1061 void tst_QMenu::task258920_mouseBorder()
1066 if (!QTest::qWaitFor([screenGeometry]{
return QCursor::pos() == screenGeometry.topLeft(); }))
1067 QSKIP(
"Can't move cursor out of the way");
1072 const QPoint
center = screenGeometry.center();
1076 const QPoint actionCenter = actionRect.center();
1081 menu.painted =
false;
1087 void tst_QMenu::setFixedWidth()
1097 void tst_QMenu::deleteActionInTriggered()
1130 static inline QByteArray msgGeometryIntersects(
const QRect &r1,
const QRect &r2)
1134 return result.toLocal8Bit();
1137 void tst_QMenu::pushButtonPopulateOnAboutToShow()
1140 QSKIP(
"Popup menus may partially overlap the button on macOS, and that's okey");
1147 b.setMenu(buttonMenu);
1152 QRect desiredGeometry =
b.geometry();
1153 desiredGeometry.moveTopLeft(QPoint(
screen.x() + 10,
screen.bottom() -
b.height() - 5));
1155 b.setGeometry(desiredGeometry);
1158 if (
b.geometry() != desiredGeometry) {
1165 QSKIP(
"Your window manager won't allow a window against the bottom of the screen");
1179 void tst_QMenu::QTBUG7907_submenus_autoselect()
1182 QMenu set1(
"Setting1");
1183 QMenu set2(
"Setting2");
1184 QMenu subset(
"Subsetting");
1185 subset.addAction(
"Values");
1186 set1.addMenu(&subset);
1189 centerOnScreen(&
menu, QSize(120, 100));
1196 void tst_QMenu::QTBUG7411_submenus_activate()
1200 QMenu sub1(
"&sub1");
1201 sub1.addAction(
"foo");
1202 sub1.setTitle(
"&sub1");
1204 centerOnScreen(&
menu, QSize(120, 100));
1215 static bool isPlatformWayland()
1220 void tst_QMenu::QTBUG30595_rtl_submenu()
1222 if (isPlatformWayland())
1223 QSKIP(
"Creating xdg_popups on Wayland requires real input events. Positions would be off.");
1228 sub.addAction(
"bar");
1229 sub.setTitle(
"&sub");
1231 centerOnScreen(&
menu, QSize(120, 40));
1239 void tst_QMenu::QTBUG20403_nested_popup_on_shortcut_trigger()
1242 QMenu sub1(
"&sub1");
1243 QMenu subsub1(
"&subsub1");
1244 subsub1.addAction(
"foo");
1245 sub1.addMenu(&subsub1);
1247 centerOnScreen(&
menu, QSize(120, 100));
1253 QVERIFY(!subsub1.isVisible());
1257 void tst_QMenu::click_while_dismissing_submenu()
1259 if (isPlatformWayland())
1260 QSKIP(
"Wayland: Creating (grabbing) popups requires real mouse events.");
1265 sub.addAction(
"subaction");
1267 centerOnScreen(&
menu, QSize(120, 100));
1286 QVERIFY(menuHiddenSpy.wait());
1307 switch (
e->type()) {
1326 void tst_QMenu::QTBUG47515_widgetActionEnterLeave()
1329 QSKIP(
"Window activation is not supported");
1331 QSKIP(
"This test is meaningless on macOS, for additional info see QTBUG-63031");
1334 QRect geometry(QPoint(), availableGeometry.size() / 3);
1335 geometry.moveCenter(availableGeometry.center());
1336 QPoint pointOutsideMenu = geometry.bottomRight() - QPoint(5, 5);
1416 void tst_QMenu::QTBUG_89082_actionTipsHide()
1419 QSKIP(
"Window activation is not supported");
1432 QString tipFullName =
"actionTip-this-is-a-long-action-and-show-the-full-name-by-tip";
1435 menuActTip->setText(elidedName);
1436 if (elidedName != tipFullName)
1437 menuActTip->setToolTip(tipFullName);
1442 #if QT_CONFIG(cursor)
1450 QVERIFY(menuWindow !=
nullptr);
1456 const QPoint submenuPos0(submenuRect0.topLeft() + QPoint(3, 3));
1459 const QPoint submenuPos1(submenuRect1.topLeft() + QPoint(3, 3));
1462 const QPoint submenuPos5(submenuRect5.topLeft() + QPoint(10, 3));
1474 void tst_QMenu::QTBUG8122_widgetActionCrashOnClose()
1477 QSKIP(
"Window activation is not supported");
1479 QSKIP(
"See QTBUG-63031");
1482 QRect geometry(QPoint(), availableGeometry.size() / 3);
1483 geometry.moveCenter(availableGeometry.center());
1484 QPoint pointOutsideMenu = geometry.bottomRight() - QPoint(5, 5);
1489 auto menuBar = topLevel.menuBar();
1492 auto spinBox1 =
new QSpinBox(
menu);
1493 wAct->setDefaultWidget(spinBox1);
1498 auto spinBox2 =
new QSpinBox(
menu);
1499 wAct2->setDefaultWidget(spinBox2);
1500 subMenu->addAction(wAct2);
1513 QPoint w1Center = topLevel.
mapFromGlobal(spinBox1->mapToGlobal(spinBox1->rect().center()));
1518 QPoint w2Center = topLevel.
mapFromGlobal(spinBox2->mapToGlobal(spinBox2->rect().center()));
1527 void tst_QMenu::widgetActionTriggerClosesMenu()
1560 int menuTriggeredCount = 0;
1561 int menuAboutToHideCount = 0;
1562 QAction *actionTriggered =
nullptr;
1565 ++menuTriggeredCount;
1566 actionTriggered =
action;
1569 ++menuAboutToHideCount;
1573 ButtonAction widgetAction;
1583 submenu.
popup(QPoint(250,250));
1585 QSKIP(
"Failed to show menus, aborting test");
1587 regularAction.trigger();
1591 QCOMPARE(actionTriggered, ®ularAction);
1592 menuTriggeredCount = 0;
1593 actionTriggered =
nullptr;
1595 widgetAction.click();
1600 QCOMPARE(actionTriggered, &widgetAction);
1603 void tst_QMenu::transientParent()
1607 window.menuBar()->setNativeMenuBar(
false);
1625 #if QT_CONFIG(shortcut) && !defined(Q_OS_DARWIN)
1639 QVERIFY(fileMenu->
window()->windowHandle()->transientParent());
1645 QVERIFY(editMenu->
window()->windowHandle()->transientParent());
1657 for (
int i = 0;
i < 2; ++
i)
1663 m_currentIndex =
index;
1680 if (m_currentIndex == 1) {
1691 void tst_QMenu::QTBUG_10735_crashWithDialog()
1696 menu.activateAction(0);
1700 void tst_QMenu::QTBUG_37933_ampersands_data()
1702 QTest::addColumn<QString>(
"title");
1703 QTest::addColumn<QString>(
"visibleTitle");
1719 void tst_QMenu::QTBUG_37933_ampersands()
1726 void tst_QMenu::QTBUG_56917_wideMenuSize()
1740 void tst_QMenu::QTBUG_56917_wideMenuScreenNumber()
1743 QSKIP(
"The platform defaults to windows being fullscreen.");
1759 void tst_QMenu::QTBUG_56917_wideSubmenuScreenNumber()
1762 QSKIP(
"The platform defaults to windows being fullscreen.");
1770 QMenu submenu(
"Submenu");
1784 void tst_QMenu::menuSize_Scrolling_data()
1786 QTest::addColumn<int>(
"numItems");
1787 QTest::addColumn<int>(
"topMargin");
1788 QTest::addColumn<int>(
"bottomMargin");
1789 QTest::addColumn<int>(
"leftMargin");
1790 QTest::addColumn<int>(
"rightMargin");
1791 QTest::addColumn<int>(
"topPadding");
1792 QTest::addColumn<int>(
"bottomPadding");
1793 QTest::addColumn<int>(
"leftPadding");
1794 QTest::addColumn<int>(
"rightPadding");
1795 QTest::addColumn<int>(
"border");
1796 QTest::addColumn<bool>(
"scrollable");
1797 QTest::addColumn<bool>(
"tearOff");
1801 QTest::newRow(
"data0") << 5 << 2 << 2 << 2 << 2 << 0 << 0 << 0 << 0 << 2 <<
false <<
false;
1803 QTest::newRow(
"data1") << 5 << 0 << 0 << 0 << 0 << 2 << 2 << 2 << 2 << 2 <<
false <<
false;
1805 QTest::newRow(
"data2") << 5 << 2 << 2 << 2 << 2 << 2 << 2 << 2 << 2 << 2 <<
false <<
false;
1807 QTest::newRow(
"data3") << 5 << 2 << 2 << 2 << 2 << 2 << 2 << 2 << 2 << 2 <<
false <<
true;
1809 QTest::newRow(
"data4") << 80 << 2 << 2 << 2 << 2 << 0 << 0 << 0 << 0 << 2 <<
false <<
false;
1811 QTest::newRow(
"data5") << 80 << 0 << 0 << 0 << 0 << 2 << 2 << 2 << 2 << 2 <<
false <<
false;
1813 QTest::newRow(
"data6") << 80 << 2 << 2 << 2 << 2 << 2 << 2 << 2 << 2 << 2 <<
false <<
false;
1815 QTest::newRow(
"data7") << 80 << 2 << 2 << 2 << 2 << 2 << 2 << 2 << 2 << 2 <<
false <<
true;
1817 QTest::newRow(
"data8") << 80 << 2 << 2 << 2 << 2 << 0 << 0 << 0 << 0 << 2 <<
true <<
false;
1819 QTest::newRow(
"data9") << 80 << 0 << 0 << 0 << 0 << 2 << 2 << 2 << 2 << 2 <<
true <<
false;
1821 QTest::newRow(
"data10") << 80 << 2 << 2 << 2 << 2 << 2 << 2 << 2 << 2 << 2 <<
true <<
false;
1823 QTest::newRow(
"data11") << 80 << 2 << 2 << 2 << 2 << 2 << 2 << 2 << 2 << 2 <<
true <<
true;
1826 void tst_QMenu::menuSize_Scrolling()
1831 struct ContentsMargins
1833 ContentsMargins(
int l,
int t,
int r,
int b)
1843 MenuPaddings(
int l,
int t,
int r,
int b)
1851 TestMenu(
int numItems,
const ContentsMargins &margins,
const MenuPaddings &paddings,
1852 int border,
bool scrollable,
bool tearOff)
1853 :
QMenu(
"Test Menu"),
1854 m_numItems(numItems),
1855 m_scrollable(scrollable),
1871 QRect lastItem = actionGeometry(actions().
at(actions().
length() - 1));
1875 qWarning(
"Skipping test on minimal/offscreen platforms - QTBUG-73522");
1880 QCOMPARE(
s.width(), lastItem.right() + fw + hmargin +
cm.right() + 1);
1884 void init(
const ContentsMargins &margins,
const MenuPaddings &paddings,
int border)
1888 setTearOffEnabled(m_tearOff);
1889 setContentsMargins(margins.left, margins.top, margins.right, margins.bottom);
1890 QString cssStyle(
"QMenu {menu-scrollable: ");
1892 cssStyle +=
"; border: ";
1894 cssStyle +=
"px solid black; padding: ";
1904 for (
int i = 1;
i <= m_numItems;
i++)
1916 QFETCH(
int, bottomMargin);
1918 QFETCH(
int, rightMargin);
1920 QFETCH(
int, bottomPadding);
1921 QFETCH(
int, leftPadding);
1922 QFETCH(
int, rightPadding);
1924 QFETCH(
bool, scrollable);
1929 TestMenu::ContentsMargins margins(leftMargin, topMargin, rightMargin, bottomMargin);
1930 TestMenu::MenuPaddings paddings(leftPadding, topPadding, rightPadding, bottomPadding);
1933 centerOnScreen(&
menu);
1949 menu.
width() - mm.fw - mm.hmargin - leftMargin - 1);
1951 menu.
height() - mm.fw - mm.vmargin - bottomMargin - 1);
1954 void tst_QMenu::tearOffMenuNotDisplayed()
1957 QSKIP(
"Window activation is not supported");
1964 for (
int i = 0;
i < 80;
i++)
1977 const int tearOffOffset = mm.fw + mm.vmargin + mm.tearOffHeight / 2;
1991 void tst_QMenu::QTBUG_61039_menu_shortcuts()
1994 QSKIP(
"Window activation is not supported");
1997 #if QT_CONFIG(shortcut)
2001 #if QT_CONFIG(shortcut)
2002 actionJoe->setShortcut(QKeySequence(
QLatin1String(
"Ctrl+J")));
2024 void tst_QMenu::screenOrientationChangedCloseMenu()
2040 #include "tst_qmenu.moc"
small capitals from c petite p scientific i
[1]
The QAction class provides an abstraction for user commands that can be added to different user inter...
void setSeparator(bool b)
void triggered(bool checked=false)
void setText(const QString &text)
static void closeAllWindows()
static QWidget * focusWidget()
static void setEffectEnabled(Qt::UIEffect, bool enable=true)
static QWidget * activePopupWidget()
static QWidget * activeWindow()
static void setActiveWindow(QWidget *act)
static QWidgetList allWidgets()
The QByteArray class provides an array of bytes.
static QByteArray number(int, int base=10)
static QCoreApplication * instance()
static bool sendEvent(QObject *receiver, QEvent *event)
static void setPos(int x, int y)
The QDebug class provides an output stream for debugging information.
The QEvent class is the base class of all event classes. Event objects contain event parameters.
The QFontMetrics class provides font metrics information.
QRect boundingRect(QChar) const
QString elidedText(const QString &text, Qt::TextElideMode mode, int width, int flags=0) const
QScreen * primaryScreen
the primary (or default) screen of the application.
static QStyleHints * styleHints()
QString platformName
The name of the underlying platform plugin.
Qt::LayoutDirection layoutDirection
the default layout direction for this application
static QScreen * screenAt(const QPoint &point)
static QList< QScreen * > screens()
static QPlatformIntegration * platformIntegration()
The QLatin1String class provides a thin wrapper around an US-ASCII/Latin-1 encoded string literal.
qsizetype length() const noexcept
const_reference at(qsizetype i) const noexcept
qsizetype count() const noexcept
The QMainWindow class provides a main application window.\inmodule QtWidgets.
The QMargins class defines the four margins of a rectangle.
int startTimer(int interval, Qt::TimerType timerType=Qt::CoarseTimer)
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
The QPaintEvent class contains event parameters for paint events. \inmodule QtGui.
The QScopedPointer class stores a pointer to a dynamically allocated object, and deletes it upon dest...
The QScreen class is used to query screen properties. \inmodule QtGui.
QRect availableGeometry
the screen's available geometry in pixels
QRect geometry
the screen's geometry in pixels
Qt::ScreenOrientation orientation
the screen orientation
The QShowEvent class provides an event that is sent when a widget is shown.
The QString class provides a Unicode character string.
QString & fill(QChar c, qsizetype size=-1)
int compare(const QString &s, Qt::CaseSensitivity cs=Qt::CaseSensitive) const noexcept
static QString number(int, int base=10)
QString trimmed() const &
virtual QSize sizeFromContents(ContentsType ct, const QStyleOption *opt, const QSize &contentsSize, const QWidget *w=nullptr) const =0
@ SH_Menu_AllowActiveAndDisabled
@ SH_Menu_SubMenuDontStartSloppyOnLeave
@ SH_Menu_SubMenuSloppyCloseTimeout
virtual int styleHint(StyleHint stylehint, const QStyleOption *opt=nullptr, const QWidget *widget=nullptr, QStyleHintReturn *returnData=nullptr) const =0
virtual int pixelMetric(PixelMetric metric, const QStyleOption *option=nullptr, const QWidget *widget=nullptr) const =0
The QStyleOption class stores the parameters used by QStyle functions.
The QTimerEvent class contains parameters that describe a timer event.
The QTimer class provides repetitive and single-shot timers.
void setSingleShot(bool singleShot)
void setInterval(int msec)
bool singleShot
whether the timer is a single-shot timer
void timeout(QPrivateSignal)
The QWindow class represents a window in the underlying windowing system.
QSignalSpy spy(myCustomObject, SIGNAL(mySignal(int, QString, double)))
[0]
const QStyleOptionButton * btn
[3]
qApp setStyleSheet("QPushButton { color: white }")
[21]
Q_TESTLIB_EXPORT QTestData & newRow(const char *dataTag)
Q_TESTLIB_EXPORT const char * currentTestFunction()
Q_GUI_EXPORT bool qWaitForWindowActive(QWindow *window, int timeout=5000)
Q_GUI_EXPORT bool qWaitForWindowExposed(QWindow *window, int timeout=5000)
void mouseMove(QWindow *window, QPoint pos=QPoint(), int delay=-1)
void mouseRelease(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey=Qt::KeyboardModifiers(), QPoint pos=QPoint(), int delay=-1)
void mouseClick(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey=Qt::KeyboardModifiers(), QPoint pos=QPoint(), int delay=-1)
void mousePress(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey=Qt::KeyboardModifiers(), QPoint pos=QPoint(), int delay=-1)
Q_CORE_EXPORT void qWait(int ms)
@ AA_DontUseNativeMenuBar
QTextStream & center(QTextStream &stream)
@ X11BypassWindowManagerHint
set set set set set set set macro pixldst1 abits if abits op else op endif endm macro pixldst2 abits if abits op else op endif endm macro pixldst4 abits if abits op else op endif endm macro pixldst0 abits op endm macro pixldst3 mem_operand op endm macro pixldst30 mem_operand op endm macro pixldst abits if abits elseif abits elseif abits elseif abits elseif abits pixldst0 abits else pixldst0 abits pixldst0 abits pixldst0 abits pixldst0 abits endif elseif abits else pixldst0 abits pixldst0 abits endif elseif abits else error unsupported bpp *numpix else pixst endif endm macro vuzp8 reg2 vuzp d d ®2 endm macro vzip8 reg2 vzip d d ®2 endm macro pixdeinterleave basereg basereg basereg basereg basereg endif endm macro pixinterleave basereg basereg basereg basereg basereg endif endm macro PF boost_increment endif if endif PF tst PF addne PF subne PF cmp ORIG_W if endif if endif if endif PF subge ORIG_W PF subges if endif if endif if endif endif endm macro cache_preload_simple endif if dst_r_bpp pld[DST_R, #(PREFETCH_DISTANCE_SIMPLE *dst_r_bpp/8)] endif if mask_bpp pld init[MASK, #(PREFETCH_DISTANCE_SIMPLE *mask_bpp/8)] endif endif endm macro ensure_destination_ptr_alignment process_pixblock_tail_head if beq irp skip1 beq endif SRC MASK if dst_r_bpp DST_R else add endif PF add sub src_basereg pixdeinterleave mask_basereg pixdeinterleave dst_r_basereg process_pixblock_head pixblock_size cache_preload_simple process_pixblock_tail pixinterleave dst_w_basereg irp beq endif process_pixblock_tail_head tst beq irp if pixblock_size chunk_size tst beq pixld SRC pixld MASK if DST_R else pixld DST_R endif if src_basereg pixdeinterleave mask_basereg pixdeinterleave dst_r_basereg process_pixblock_head if pixblock_size cache_preload_simple endif process_pixblock_tail pixinterleave dst_w_basereg irp if pixblock_size chunk_size tst beq if DST_W else pixst DST_W else mov ORIG_W endif add lsl if lsl endif if lsl endif lsl endif lsl endif lsl endif subs mov DST_W if regs_shortage str endif bge start_of_loop_label endm macro generate_composite_function
#define QByteArrayLiteral(str)
#define QT_WARNING_DISABLE_DEPRECATED
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter * sub
GLenum GLuint GLenum GLsizei length
GLboolean GLboolean GLboolean b
GLint GLint GLint GLint GLint x
[0]
GLfloat GLfloat GLfloat w
[0]
GLboolean GLboolean GLboolean GLboolean a
[7]
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLdouble GLdouble GLdouble GLdouble top
GLenum GLenum GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint border
GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint GLdouble GLdouble w2
GLuint GLuint GLuint GLuint arg1
GLuint GLuint GLuint GLuint GLuint GLuint GLuint GLuint GLuint GLuint arg3
GLuint GLuint GLuint GLuint GLuint GLuint GLuint arg2
GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint GLdouble w1
#define QStringLiteral(str)
#define QTEST_MAIN(TestObject)
#define QSKIP(statement,...)
#define QFETCH(Type, name)
#define QTRY_COMPARE_WITH_TIMEOUT(expr, expected, timeout)
#define QEXPECT_FAIL(dataIndex, comment, mode)
#define QTRY_COMPARE(expr, expected)
#define QVERIFY(statement)
#define QTRY_VERIFY(expr)
#define QVERIFY2(statement, description)
connect(quitButton, &QPushButton::clicked, &app, &QCoreApplication::quit, Qt::QueuedConnection)
The QLatin1Char class provides an 8-bit ASCII/Latin-1 character.
void compare(Input input, FnUnderTest fn_under_test, const QByteArray &output)
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent