Changeset 939
- Timestamp:
- Aug 4, 2011, 8:44:45 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
tests/modal/modal.cpp
r937 r939 8 8 public: 9 9 10 MyMainWidget() : mTestNo (0), mCurWidget (0) 11 { 12 mTestNo = 4; 13 14 setWindowTitle ("Primary"); 15 16 mPB = new QPushButton ("Next Test", this); 17 connect (mPB, SIGNAL (clicked()), this, SLOT (nextTest())); 10 MyMainWidget (QWidget *aParent = 0, Qt::WindowFlags aFlags = 0) 11 : QWidget (aParent, aFlags) 12 { 13 setWindowTitle (QString ("MyMainWidget (0x%1)") 14 .arg ((intptr_t) this, 8, 16, QChar('0'))); 15 16 QHBoxLayout *pbLayout = new QHBoxLayout(); 17 18 for (int i = 1; i <= 10; ++ i) 19 { 20 QPushButton *pb = new QPushButton (QString::number (i), this); 21 connect (pb, SIGNAL (clicked()), this, SLOT (nextTest())); 22 pbLayout->addWidget (pb); 23 } 24 25 mPBClone = new QPushButton ("Clone", this); 26 connect (mPBClone, SIGNAL (clicked()), this, SLOT (clone())); 27 28 mPBCloneModal = new QPushButton ("Modal Clone", this); 29 connect (mPBCloneModal, SIGNAL (clicked()), this, SLOT (cloneModal())); 30 31 mPBCloneAppModal = new QPushButton ("App Modal Clone", this); 32 connect (mPBCloneAppModal, SIGNAL (clicked()), this, SLOT (cloneAppModal())); 18 33 19 34 QVBoxLayout *layout = new QVBoxLayout(); 20 layout->addWidget (mPB); 35 layout->addLayout (pbLayout); 36 layout->addWidget (mPBClone); 37 layout->addWidget (mPBCloneModal); 38 layout->addWidget (mPBCloneAppModal); 21 39 setLayout (layout); 22 40 } … … 24 42 virtual ~MyMainWidget() 25 43 { 26 delete mCurWidget; 27 } 28 29 void test (QWidget *w, const QString &text) 30 { 31 w->setWindowTitle ("Secondary"); 44 } 45 46 void test (int aNum, QWidget *aWgt, const QString &aText) 47 { 48 aWgt->setAttribute (Qt::WA_DeleteOnClose); 49 50 aWgt->setWindowTitle (QString ("[%1] %2 (0x%3)") 51 .arg (aNum) 52 .arg (aWgt->metaObject()->className()) 53 .arg ((intptr_t) aWgt, 8, 16, QChar('0'))); 32 54 33 55 QString newText = QString ( 34 "%1\n\n" 35 "parentWidget() is %2\n" 36 "className() is %3\n" 37 "isWindow() is %4\n" 38 "windowFlags() is 0x%5\n" 39 "windowModality() is %6") 40 .arg (text) 41 .arg (w->parentWidget() ? w->parentWidget()->metaObject() 42 ->className() 43 : "<none>") 44 .arg (w->metaObject()->className()) 45 .arg (w->isWindow()) 46 .arg (w->windowFlags(), 8, 16, QLatin1Char ('0')) 47 .arg (w->windowModality()); 48 49 if (w->inherits ("QMessageBox")) 50 { 51 static_cast <QMessageBox *> (w)->setText (newText); 56 "[%1] %2\n\n" 57 "parentWidget() is %3\n" 58 "className() is %4\n" 59 "isWindow() is %5\n" 60 "windowFlags() is 0x%6\n" 61 "windowModality() is %7") 62 .arg (aNum) 63 .arg (aText) 64 .arg (aWgt->parentWidget() ? aWgt->parentWidget()->metaObject() 65 ->className() 66 : "<none>") 67 .arg (aWgt->metaObject()->className()) 68 .arg (aWgt->isWindow()) 69 .arg (aWgt->windowFlags(), 8, 16, QLatin1Char ('0')) 70 .arg (aWgt->windowModality()); 71 72 if (aWgt->inherits ("QMessageBox")) 73 { 74 static_cast <QMessageBox *> (aWgt)->setText (newText); 52 75 } 53 76 else 54 77 { 55 QLabel *label = new QLabel ( w);78 QLabel *label = new QLabel (); 56 79 label->setText (newText); 57 80 58 81 QVBoxLayout *layout = new QVBoxLayout(); 59 82 layout->addWidget (label); 60 w->setLayout (layout); 61 } 62 63 w->show(); 64 65 if (mCurWidget) 66 { 67 mCurWidget->close(); 68 delete mCurWidget; 69 } 70 71 mCurWidget = w; 83 aWgt->setLayout (layout); 84 } 85 86 aWgt->show(); 72 87 } 73 88 … … 76 91 void nextTest() 77 92 { 78 switch (mTestNo) 79 { 80 case 0: 93 int num = static_cast <QPushButton *> (sender())->text().toInt(); 94 switch (num) 95 { 96 case 1: 81 97 { 82 98 QWidget *w = new QWidget(); 83 test ( w,99 test (w, 84 100 "QWidget().\n" 85 101 "Should have a taskbar entry.\n" … … 88 104 break; 89 105 } 90 case 1:106 case : 91 107 { 92 108 QWidget *w = new QWidget (this, Qt::Window); 93 test ( w,109 test (w, 94 110 "QWidget (this, Qt::Window).\n" 95 111 "Should not have a taskbar entry.\n" … … 98 114 break; 99 115 } 100 case 2:116 case : 101 117 { 102 118 QWidget *w = new QDialog(); 103 test ( w,119 test (w, 104 120 "QDialog().\n" 105 121 "Should have a taskbar entry.\n" … … 108 124 break; 109 125 } 110 case 3:126 case : 111 127 { 112 128 QWidget *w = new QDialog (this); 113 test ( w,129 test (w, 114 130 "QDialog(this).\n" 115 131 "Should not have a taskbar entry.\n" … … 118 134 break; 119 135 } 120 case 4:136 case : 121 137 { 122 138 QWidget *w = new QMessageBox(); 123 test ( w,139 test (w, 124 140 "QMessageBox().\n" 125 141 "Should have a taskbar entry.\n" … … 128 144 break; 129 145 } 130 case 5:146 case : 131 147 { 132 148 QWidget *w = new QMessageBox (this); 133 test ( w,149 test (w, 134 150 "QMessageBox (this).\n" 135 151 "Should not have a taskbar entry.\n" … … 138 154 break; 139 155 } 140 case 6:156 case : 141 157 { 142 158 QWidget *w = new QWidget(); 143 159 w->setWindowModality (Qt::WindowModal); 144 test ( w,160 test (w, 145 161 "QWidget() - WindowModal.\n" 146 162 "Should have a taskbar entry.\n" … … 149 165 break; 150 166 } 151 case 7:167 case : 152 168 { 153 169 QWidget *w = new QWidget (this, Qt::Window); 154 170 w->setWindowModality (Qt::WindowModal); 155 test ( w,171 test (w, 156 172 "QWidget (this, Qt::Window) - WindowModal.\n" 157 173 "Should not have a taskbar entry.\n" … … 160 176 break; 161 177 } 162 case 8:178 case : 163 179 { 164 180 QWidget *w = new QWidget(0, Qt::Dialog); 165 181 w->setWindowModality (Qt::ApplicationModal); 166 test ( w,182 test (w, 167 183 "QWidget() - ApplicationModal.\n" 168 184 "Should have a taskbar entry.\n" … … 171 187 break; 172 188 } 173 case 9:189 case : 174 190 { 175 191 QWidget *w = new QWidget (this, Qt::Window); 176 192 w->setWindowModality (Qt::ApplicationModal); 177 test ( w,193 test (w, 178 194 "QWidget (this, Qt::Window) - ApplicationModal.\n" 179 195 "Should not have a taskbar entry.\n" … … 183 199 } 184 200 default: 185 mPB->setText ("No More Tests");186 mPB->setEnabled (false);187 201 return; 188 202 } 189 190 ++ mTestNo; 203 } 204 205 void clone() 206 { 207 QWidget *w = new MyMainWidget (); 208 w->setAttribute (Qt::WA_DeleteOnClose); 209 w->show(); 210 } 211 212 void cloneModal() 213 { 214 QWidget *w = new MyMainWidget (this, Qt::Window); 215 w->setAttribute (Qt::WA_DeleteOnClose); 216 w->setWindowModality (Qt::WindowModal); 217 w->setWindowTitle (QString("[M] ") + w->windowTitle()); 218 w->show(); 219 } 220 221 void cloneAppModal() 222 { 223 QWidget *w = new MyMainWidget(); 224 w->setAttribute (Qt::WA_DeleteOnClose); 225 w->setWindowModality (Qt::ApplicationModal); 226 w->setWindowTitle (QString("[AM] ") + w->windowTitle()); 227 w->show(); 191 228 } 192 229 193 230 private: 194 231 195 int mTestNo;196 QPushButton *mPB ;197 Q Widget *mCurWidget;232 ; 233 QPushButton *mPB; 234 Q; 198 235 }; 199 236 … … 203 240 app.setQuitOnLastWindowClosed (true); 204 241 205 MyMainWidget mainWidget; 206 mainWidget.resize (100, 100); 207 mainWidget.show(); 242 MyMainWidget *mainWidget = new MyMainWidget(); 243 mainWidget->show(); 208 244 209 245 return app.exec();
Note:
See TracChangeset
for help on using the changeset viewer.