5 class TestQxtGui : public QObject
10 void testQxtApplication();
12 void testQxtCheckComboBox_data();
13 void testQxtCheckComboBox();
15 void testQxtConfigDialog();
16 void testQxtConfirmationMessage();
17 void testQxtDesktopWidget();
18 void testQxtDockWidget();
19 void testQxtGroupBox();
20 void testQxtItemDelegate();
24 void testQxtListWidget_data();
25 void testQxtListWidget();
27 void testQxtProgressLabel();
28 void testQxtProxyStyle();
29 void testQxtPushButton();
30 void testQxtSpanSlider();
32 void testQxtStringSpinBox();
34 void testQxtTableWidget_data();
35 void testQxtTableWidget();
37 void testQxtTabWidget();
38 void testQxtToolTip();
40 void testQxtTreeWidget_data();
41 void testQxtTreeWidget();
44 void TestQxtGui::testQxtApplication()
49 void TestQxtGui::testQxtCheckComboBox_data()
51 QTest::addColumn<QTestEventList>("popup");
52 QTest::addColumn<QTestEventList>("select");
53 QTest::addColumn<QTestEventList>("close");
54 QTest::addColumn<QStringList>("expected");
56 QTestEventList popup1;
57 popup1.addKeyClick(Qt::Key_Up); // popup
59 QTestEventList popup2;
60 popup2.addKeyClick(Qt::Key_Down); // popup
62 QTestEventList close1;
63 close1.addKeyClick(Qt::Key_Escape); // close
65 QTestEventList close2;
66 close2.addKeyClick(Qt::Key_Return); // close
68 QTestEventList select0;
71 QTestEventList select1;
72 select1.addKeyClick(Qt::Key_Space); // select first
73 select1.addKeyClick(Qt::Key_Down); // move to second
74 select1.addKeyClick(Qt::Key_Down); // move to third
75 select1.addKeyClick(Qt::Key_Space); // select third
76 QStringList result1 = QStringList() << "1" << "3";
78 QTestEventList select2;
79 select2.addKeyClick(Qt::Key_Down); // move to second
80 select2.addKeyClick(Qt::Key_Down); // move to third
81 select2.addKeyClick(Qt::Key_Up); // move back to second
82 select2.addKeyClick(Qt::Key_Space); // select second
83 QStringList result2 = QStringList() << "2";
85 QTest::newRow("-") << popup1 << select0 << close2 << result0;
86 QTest::newRow("1,3") << popup1 << select1 << close1 << result1;
87 QTest::newRow("2") << popup2 << select2 << close2 << result2;
90 void TestQxtGui::testQxtCheckComboBox()
92 QFETCH(QTestEventList, popup);
93 QFETCH(QTestEventList, select);
94 QFETCH(QTestEventList, close);
95 QFETCH(QStringList, expected);
97 QxtCheckComboBox combo;
98 combo.addItems(QStringList() << "1" << "2" << "3" << "4");
100 QSignalSpy spy(&combo, SIGNAL(checkedItemsChanged(const QStringList&)));
101 QVERIFY(spy.isValid());
103 popup.simulate(&combo);
104 select.simulate(combo.view());
105 close.simulate(&combo);
107 QCOMPARE(combo.checkedItems(), expected);
109 if (!combo.checkedItems().isEmpty())
111 QVERIFY(spy.count() > 0);
112 while (!spy.isEmpty())
114 QList<QVariant> arguments = spy.takeFirst();
115 QVERIFY(arguments.at(0).type() == QVariant::StringList);
120 QVERIFY(spy.count() == 0);
124 void TestQxtGui::testQxtConfigDialog()
126 // See: test/app, demos/configdialog
129 void TestQxtGui::testQxtConfirmationMessage()
134 void TestQxtGui::testQxtDesktopWidget()
136 // See: demos/qxtsnapshot
137 WId activeId = QxtDesktopWidget::activeWindow();
138 QString activeTitle = QxtDesktopWidget::windowTitle(activeId);
139 WId foundId = QxtDesktopWidget::findWindow(activeTitle);
140 QString foundTitle = QxtDesktopWidget::windowTitle(foundId);
141 QRect activeRect = QxtDesktopWidget::windowGeometry(activeId);
142 WId atId = QxtDesktopWidget::windowAt(activeRect.center());
143 QString atTitle = QxtDesktopWidget::windowTitle(atId);
144 QVERIFY(activeId == foundId);
145 QVERIFY(foundId == atId);
146 QVERIFY(activeTitle == foundTitle);
147 QVERIFY(foundTitle == atTitle);
150 void TestQxtGui::testQxtDockWidget()
152 // See: demos/dockwidgets
155 void TestQxtGui::testQxtGroupBox()
160 void TestQxtGui::testQxtItemDelegate()
163 // - testQxtListWidget()
164 // - testQxtTableWidget()
165 // - testQxtTreeWidget()
168 void TestQxtGui::testQxtLabel()
170 QxtLabel label("Text");
172 QTestEventList events;
173 events.addMouseClick(Qt::LeftButton);
175 QSignalSpy clicked(&label, SIGNAL(clicked()));
176 QSignalSpy textChanged(&label, SIGNAL(textChanged(const QString&)));
177 QVERIFY(clicked.isValid());
178 QVERIFY(textChanged.isValid());
180 events.simulate(&label);
181 label.setText("Changed");
183 QCOMPARE(clicked.count(), 1);
184 QCOMPARE(textChanged.count(), 1);
186 QList<QVariant> arguments = clicked.takeFirst();
187 QVERIFY(arguments.isEmpty());
189 arguments = textChanged.takeFirst();
190 QVERIFY(arguments.at(0).toString() == "Changed");
193 void TestQxtGui::testQxtListWidget_data()
195 QTest::addColumn<QTestEventList>("events");
196 QTest::addColumn<int>("amount");
199 for (int i = 0; i < 10; ++i)
201 all.addKeyClick(Qt::Key_Down); // select/finish edit
202 all.addKeyClick(Qt::Key_Space); // check
203 all.addKeyClick(Qt::Key_F2); // start edit
205 all.addKeyClick(Qt::Key_Up);
206 QTest::newRow("all checked") << all << 10;
208 QTestEventList second;
209 for (int i = 0; i < 10; i += 2)
211 second.addKeyClick(Qt::Key_Down); // select
212 second.addKeyClick(Qt::Key_Space); // check
213 second.addKeyClick(Qt::Key_F2); // start edit
214 second.addKeyClick(Qt::Key_Escape); // finish edit
216 second.addKeyClick(Qt::Key_Up);
217 QTest::newRow("every second checked") << second << 5;
220 QTest::newRow("none checked") << none << 0;
223 void TestQxtGui::testQxtListWidget()
225 QFETCH(QTestEventList, events);
228 QxtListWidget listWidget;
229 listWidget.setEditTriggers(QAbstractItemView::EditKeyPressed);
230 for (int i = 0; i < 10; ++i)
232 QxtListWidgetItem* item = new QxtListWidgetItem(QString::number(i), &listWidget);
233 item->setFlag(Qt::ItemIsUserCheckable);
234 item->setFlag(Qt::ItemIsEditable);
235 item->setCheckState(Qt::Unchecked);
238 qRegisterMetaType<QListWidgetItem*>("QListWidgetItem*");
239 qRegisterMetaType<QxtListWidgetItem*>("QxtListWidgetItem*");
240 QSignalSpy editStarted(&listWidget, SIGNAL(itemEditingStarted(QListWidgetItem*)));
241 QSignalSpy editFinished(&listWidget, SIGNAL(itemEditingFinished(QListWidgetItem*)));
242 QSignalSpy checkChanged(&listWidget, SIGNAL(itemCheckStateChanged(QxtListWidgetItem*)));
243 QVERIFY(editStarted.isValid());
244 QVERIFY(editFinished.isValid());
245 QVERIFY(checkChanged.isValid());
247 events.simulate(listWidget.viewport());
249 QList<QListWidgetItem*> checkedItems;
250 for (int i = 0; i < 10; ++i)
252 QListWidgetItem* item = listWidget.item(i);
253 if (item && item->data(Qt::CheckStateRole).toInt() == Qt::Checked)
254 checkedItems += item;
257 QCOMPARE(checkChanged.count(), checkedItems.count());
258 QCOMPARE(editStarted.count(), amount);
259 QCOMPARE(editFinished.count(), amount);
262 void TestQxtGui::testQxtProgressLabel()
267 void TestQxtGui::testQxtProxyStyle()
272 void TestQxtGui::testQxtPushButton()
277 void TestQxtGui::testQxtStars()
282 void TestQxtGui::testQxtSpanSlider()
284 QxtSpanSlider slider;
285 slider.setRange(0, 99);
287 QSignalSpy spanChanged(&slider, SIGNAL(spanChanged(int, int)));
288 QSignalSpy lowerChanged(&slider, SIGNAL(lowerValueChanged(int)));
289 QSignalSpy upperChanged(&slider, SIGNAL(upperValueChanged(int)));
290 QVERIFY(spanChanged.isValid());
291 QVERIFY(lowerChanged.isValid());
292 QVERIFY(upperChanged.isValid());
294 // #1 setSpan() - basic change
295 slider.setSpan(4, 75);
296 QCOMPARE(slider.lowerValue(), 4);
297 QCOMPARE(slider.upperValue(), 75);
298 QCOMPARE(spanChanged.count(), 1);
299 QCOMPARE(lowerChanged.count(), 1);
300 QCOMPARE(upperChanged.count(), 1);
301 QList<QVariant> args = spanChanged.takeLast();
302 QVERIFY(args.at(0).toInt() == 4);
303 QVERIFY(args.at(1).toInt() == 75);
304 QVERIFY(lowerChanged.takeLast().at(0).toInt() == 4);
305 QVERIFY(upperChanged.takeLast().at(0).toInt() == 75);
307 // #2 setSpan() - no change
308 slider.setSpan(75, 4);
309 QCOMPARE(slider.lowerValue(), 4);
310 QCOMPARE(slider.upperValue(), 75);
311 QCOMPARE(spanChanged.count(), 0);
312 QCOMPARE(lowerChanged.count(), 0);
313 QCOMPARE(upperChanged.count(), 0);
315 // #3 setSpan() - inverse span
316 slider.setSpan(66, 33);
317 QCOMPARE(slider.lowerValue(), 33);
318 QCOMPARE(slider.upperValue(), 66);
319 QCOMPARE(spanChanged.count(), 1);
320 QCOMPARE(lowerChanged.count(), 1);
321 QCOMPARE(upperChanged.count(), 1);
322 args = spanChanged.takeLast();
323 QVERIFY(args.at(0).toInt() == 33);
324 QVERIFY(args.at(1).toInt() == 66);
325 QVERIFY(lowerChanged.takeLast().at(0).toInt() == 33);
326 QVERIFY(upperChanged.takeLast().at(0).toInt() == 66);
328 // #4 setSpan() - keep span in range
329 slider.setSpan(-400, 400);
330 QCOMPARE(slider.lowerValue(), 0);
331 QCOMPARE(slider.upperValue(), 99);
332 QCOMPARE(spanChanged.count(), 1);
333 QCOMPARE(lowerChanged.count(), 1);
334 QCOMPARE(upperChanged.count(), 1);
335 args = spanChanged.takeLast();
336 QVERIFY(args.at(0).toInt() == 0);
337 QVERIFY(args.at(1).toInt() == 99);
338 QVERIFY(lowerChanged.takeLast().at(0).toInt() == 0);
339 QVERIFY(upperChanged.takeLast().at(0).toInt() == 99);
341 // #5 setLowerValue() - basic change
342 slider.setLowerValue(3);
343 QCOMPARE(slider.lowerValue(), 3);
344 QCOMPARE(slider.upperValue(), 99);
345 QCOMPARE(spanChanged.count(), 1);
346 QCOMPARE(lowerChanged.count(), 1);
347 QCOMPARE(upperChanged.count(), 0);
348 args = spanChanged.takeLast();
349 QVERIFY(args.at(0).toInt() == 3);
350 QVERIFY(args.at(1).toInt() == 99);
351 QVERIFY(lowerChanged.takeLast().at(0).toInt() == 3);
353 // #6 setLowerValue() - no change
354 slider.setLowerValue(3);
355 QCOMPARE(slider.lowerValue(), 3);
356 QCOMPARE(slider.upperValue(), 99);
357 QCOMPARE(spanChanged.count(), 0);
358 QCOMPARE(lowerChanged.count(), 0);
359 QCOMPARE(upperChanged.count(), 0);
361 // #7 setLowerValue() - keep span in range
362 slider.setLowerValue(-3);
363 QCOMPARE(slider.lowerValue(), 0);
364 QCOMPARE(slider.upperValue(), 99);
365 QCOMPARE(spanChanged.count(), 1);
366 QCOMPARE(lowerChanged.count(), 1);
367 QCOMPARE(upperChanged.count(), 0);
368 args = spanChanged.takeLast();
369 QVERIFY(args.at(0).toInt() == 0);
370 QVERIFY(args.at(1).toInt() == 99);
371 QVERIFY(lowerChanged.takeLast().at(0).toInt() == 0);
373 // #8 setUpperValue() - basic change
374 slider.setUpperValue(77);
375 QCOMPARE(slider.lowerValue(), 0);
376 QCOMPARE(slider.upperValue(), 77);
377 QCOMPARE(spanChanged.count(), 1);
378 QCOMPARE(lowerChanged.count(), 0);
379 QCOMPARE(upperChanged.count(), 1);
380 args = spanChanged.takeLast();
381 QVERIFY(args.at(0).toInt() == 0);
382 QVERIFY(args.at(1).toInt() == 77);
383 QVERIFY(upperChanged.takeLast().at(0).toInt() == 77);
385 // #9 setUpperValue() - no change
386 slider.setUpperValue(77);
387 QCOMPARE(slider.lowerValue(), 0);
388 QCOMPARE(slider.upperValue(), 77);
389 QCOMPARE(spanChanged.count(), 0);
390 QCOMPARE(lowerChanged.count(), 0);
391 QCOMPARE(upperChanged.count(), 0);
393 // #10 setUpperValue() - keep span in range
394 slider.setUpperValue(111);
395 QCOMPARE(slider.lowerValue(), 0);
396 QCOMPARE(slider.upperValue(), 99);
397 QCOMPARE(spanChanged.count(), 1);
398 QCOMPARE(lowerChanged.count(), 0);
399 QCOMPARE(upperChanged.count(), 1);
400 args = spanChanged.takeLast();
401 QVERIFY(args.at(0).toInt() == 0);
402 QVERIFY(args.at(1).toInt() == 99);
403 QVERIFY(upperChanged.takeLast().at(0).toInt() == 99);
405 // #11 setLowerValue(), setUpperValue() - inverse span
406 slider.setLowerValue(66); // a: lower->66,upper=99
407 slider.setUpperValue(33); // b: lower->33,upper->66
408 slider.setLowerValue(77); // c: lower->66,upper->77
409 QCOMPARE(spanChanged.count(), 3);
410 QCOMPARE(lowerChanged.count(), 3);
411 QCOMPARE(upperChanged.count(), 2);
413 args = spanChanged.takeFirst();
414 QVERIFY(args.at(0).toInt() == 66);
415 QVERIFY(args.at(1).toInt() == 99);
416 QVERIFY(lowerChanged.takeFirst().at(0).toInt() == 66);
418 args = spanChanged.takeFirst();
419 QVERIFY(args.at(0).toInt() == 33);
420 QVERIFY(args.at(1).toInt() == 66);
421 QVERIFY(lowerChanged.takeFirst().at(0).toInt() == 33);
422 QVERIFY(upperChanged.takeFirst().at(0).toInt() == 66);
424 args = spanChanged.takeFirst();
425 QVERIFY(args.at(0).toInt() == 66);
426 QVERIFY(args.at(1).toInt() == 77);
427 QVERIFY(lowerChanged.takeFirst().at(0).toInt() == 66);
428 QVERIFY(upperChanged.takeFirst().at(0).toInt() == 77);
430 // # 12 change of range
431 slider.setRange(68, 72);
432 QCOMPARE(slider.lowerValue(), 68);
433 QCOMPARE(slider.upperValue(), 72);
434 QCOMPARE(spanChanged.count(), 1);
435 QCOMPARE(lowerChanged.count(), 1);
436 QCOMPARE(upperChanged.count(), 1);
437 args = spanChanged.takeLast();
438 QVERIFY(args.at(0).toInt() == 68);
439 QVERIFY(args.at(1).toInt() == 72);
440 QVERIFY(lowerChanged.takeLast().at(0).toInt() == 68);
441 QVERIFY(upperChanged.takeLast().at(0).toInt() == 72);
444 void TestQxtGui::testQxtStringSpinBox()
447 for (int i = 0; i < 10; ++i)
448 strings += QString::number(i);
450 QxtStringSpinBox spinBox;
451 spinBox.setStrings(strings);
454 up.addKeyClick(Qt::Key_Up);
457 down.addKeyClick(Qt::Key_Down);
459 for (int i = 0; i < 10; ++i)
461 QCOMPARE(spinBox.cleanText(), QString::number(i));
462 up.simulate(&spinBox);
463 QCOMPARE(spinBox.cleanText(), QString::number(qMin(i+1, 9)));
466 for (int i = 9; i >= 0; --i)
468 QCOMPARE(spinBox.cleanText(), QString::number(i));
469 down.simulate(&spinBox);
470 QCOMPARE(spinBox.cleanText(), QString::number(qMax(i-1, 0)));
474 void TestQxtGui::testQxtTableWidget_data()
476 QTest::addColumn<QTestEventList>("events");
477 QTest::addColumn<int>("amount");
480 all.addKeyClick(Qt::Key_Tab); // select first
481 all.addKeyClick(Qt::Key_F2); // start editing
482 all.addKeyClick(Qt::Key_Tab); // select second
483 all.addKeyClick(Qt::Key_F2); // start editing
484 all.addKeyClick(Qt::Key_Tab); // select third
485 all.addKeyClick(Qt::Key_F2); // start editing
486 all.addKeyClick(Qt::Key_Tab); // select fourth
487 all.addKeyClick(Qt::Key_F2); // start editing
488 all.addKeyClick(Qt::Key_Tab); // finish editing
489 QTest::newRow("all edited") << all << 4;
491 QTestEventList second;
492 second.addKeyClick(Qt::Key_Tab); // select second
493 second.addKeyClick(Qt::Key_Tab);
494 second.addKeyClick(Qt::Key_F2); // edit
495 second.addKeyClick(Qt::Key_Tab); // select fourth
496 second.addKeyClick(Qt::Key_Tab);
497 second.addKeyClick(Qt::Key_F2); // edit
498 second.addKeyClick(Qt::Key_Tab); // abort
499 QTest::newRow("every second edited") << second << 2;
502 QTest::newRow("none edited") << none << 0;
505 void TestQxtGui::testQxtTableWidget()
507 QFETCH(QTestEventList, events);
510 QxtTableWidget tableWidget(2, 2);
511 tableWidget.setEditTriggers(QAbstractItemView::EditKeyPressed);
513 qRegisterMetaType<QTableWidgetItem*>("QTableWidgetItem*");
514 QSignalSpy editStarted(&tableWidget, SIGNAL(itemEditingStarted(QTableWidgetItem*)));
515 QSignalSpy editFinished(&tableWidget, SIGNAL(itemEditingFinished(QTableWidgetItem*)));
516 QVERIFY(editStarted.isValid());
517 QVERIFY(editFinished.isValid());
519 events.simulate(tableWidget.viewport());
521 QCOMPARE(editStarted.count(), amount);
522 QCOMPARE(editFinished.count(), amount);
525 void TestQxtGui::testQxtTabWidget()
527 QxtTabWidget tabWidget;
528 tabWidget.setTabContextMenuPolicy(Qt::ActionsContextMenu);
529 tabWidget.addTab(new QLabel("1"), "1");
530 tabWidget.addTab(new QLabel("2"), "2");
531 tabWidget.addTab(new QLabel("3"), "3");
533 QPointer<QAction> act1a = new QAction("1a", &tabWidget);
534 QPointer<QAction> act1b = new QAction("1b", &tabWidget);
535 QPointer<QAction> act2 = new QAction("2", &tabWidget);
537 tabWidget.addTabAction(1, act2);
538 QCOMPARE(tabWidget.tabActions(0).count(), 0);
539 QCOMPARE(tabWidget.tabActions(1).count(), 1);
540 QCOMPARE(tabWidget.tabActions(2).count(), 0);
542 QPointer<QAction> act3 = tabWidget.addTabAction(2, "3");
543 QCOMPARE(tabWidget.tabActions(0).count(), 0);
544 QCOMPARE(tabWidget.tabActions(1).count(), 1);
545 QCOMPARE(tabWidget.tabActions(2).count(), 1);
547 QList<QAction*> actions;
548 actions << act1a << act1b;
549 tabWidget.addTabActions(0, actions);
550 QCOMPARE(tabWidget.tabActions(0).count(), 2);
551 QCOMPARE(tabWidget.tabActions(1).count(), 1);
552 QCOMPARE(tabWidget.tabActions(2).count(), 1);
554 tabWidget.clearTabActions(0);
555 QCOMPARE(tabWidget.tabActions(0).count(), 0);
556 QCOMPARE(tabWidget.tabActions(1).count(), 1);
557 QCOMPARE(tabWidget.tabActions(2).count(), 1);
558 QVERIFY(act1a == 0 && act1b == 0); // must have been deleted
560 tabWidget.removeTabAction(1, act2);
561 QCOMPARE(tabWidget.tabActions(0).count(), 0);
562 QCOMPARE(tabWidget.tabActions(1).count(), 0);
563 QCOMPARE(tabWidget.tabActions(2).count(), 1);
564 QVERIFY(act2 != 0); // must not have been deleted
566 tabWidget.insertTabAction(2, act3, act2);
567 QCOMPARE(tabWidget.tabActions(0).count(), 0);
568 QCOMPARE(tabWidget.tabActions(1).count(), 0);
569 QCOMPARE(tabWidget.tabActions(2).count(), 2);
570 QVERIFY(tabWidget.tabActions(2).first() == act2);
571 QVERIFY(tabWidget.tabActions(2).last() == act3);
574 void TestQxtGui::testQxtToolTip()
576 // See demos/qxtsnapshot
579 void TestQxtGui::testQxtTreeWidget_data()
581 QTest::addColumn<QTestEventList>("events");
582 QTest::addColumn<int>("amount");
585 for (int i = 0; i < 10; ++i)
587 all.addKeyClick(Qt::Key_Down); // select next
588 all.addKeyClick(Qt::Key_Space); // check
589 all.addKeyClick(Qt::Key_F2); // start editing
591 all.addKeyClick(Qt::Key_Up);
592 QTest::newRow("all checked") << all << 10;
594 QTestEventList second;
595 for (int i = 0; i < 10; i += 2)
597 second.addKeyClick(Qt::Key_Down); // select
598 second.addKeyClick(Qt::Key_Space); // check
599 second.addKeyClick(Qt::Key_F2); // start edit
600 second.addKeyClick(Qt::Key_Escape); // finish edit
602 second.addKeyClick(Qt::Key_Up);
603 QTest::newRow("every second checked") << second << 5;
606 QTest::newRow("none checked") << none << 0;
609 void TestQxtGui::testQxtTreeWidget()
611 QFETCH(QTestEventList, events);
614 QxtTreeWidget treeWidget;
615 treeWidget.setColumnCount(1);
616 treeWidget.setEditTriggers(QAbstractItemView::EditKeyPressed);
617 for (int i = 0; i < 10; ++i)
619 QxtTreeWidgetItem* item = new QxtTreeWidgetItem(&treeWidget, QStringList(QString::number(i)));
620 item->setFlag(Qt::ItemIsEditable);
621 item->setFlag(Qt::ItemIsUserCheckable);
622 item->setCheckState(0, Qt::Unchecked);
625 qRegisterMetaType<QTreeWidgetItem*>("QTreeWidgetItem*");
626 qRegisterMetaType<QxtTreeWidgetItem*>("QxtTreeWidgetItem*");
627 QSignalSpy editStarted(&treeWidget, SIGNAL(itemEditingStarted(QTreeWidgetItem*)));
628 QSignalSpy editFinished(&treeWidget, SIGNAL(itemEditingFinished(QTreeWidgetItem*)));
629 QSignalSpy checkChanged(&treeWidget, SIGNAL(itemCheckStateChanged(QxtTreeWidgetItem*)));
630 QVERIFY(editStarted.isValid());
631 QVERIFY(editFinished.isValid());
632 QVERIFY(checkChanged.isValid());
634 events.simulate(treeWidget.viewport());
636 QList<QTreeWidgetItem*> checkedItems;
637 for (int i = 0; i < 10; ++i)
639 QTreeWidgetItem* item = treeWidget.topLevelItem(i);
640 if (item && item->data(0, Qt::CheckStateRole).toInt() == Qt::Checked)
641 checkedItems += item;
644 QCOMPARE(checkChanged.count(), checkedItems.count());
645 QCOMPARE(editStarted.count(), amount);
646 QCOMPARE(editFinished.count(), amount);
649 QTEST_MAIN(TestQxtGui)