Changeset 939


Ignore:
Timestamp:
Aug 4, 2011, 8:44:45 PM (14 years ago)
Author:
Dmitry A. Kuminov
Message:

tests: modal: Redesigned to be more useful.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tests/modal/modal.cpp

    r937 r939  
    88public:
    99
    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()));
    1833
    1934        QVBoxLayout *layout = new QVBoxLayout();
    20         layout->addWidget (mPB);
     35        layout->addLayout (pbLayout);
     36        layout->addWidget (mPBClone);
     37        layout->addWidget (mPBCloneModal);
     38        layout->addWidget (mPBCloneAppModal);
    2139        setLayout (layout);
    2240    }
     
    2442    virtual ~MyMainWidget()
    2543    {
    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')));
    3254
    3355        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);
    5275        }
    5376        else
    5477        {
    55             QLabel *label = new QLabel (w);
     78            QLabel *label = new QLabel ();
    5679            label->setText (newText);
    5780
    5881            QVBoxLayout *layout = new QVBoxLayout();
    5982            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();
    7287    }
    7388
     
    7691    void nextTest()
    7792    {
    78         switch (mTestNo)
    79         {
    80         case 0:
     93        int num = static_cast <QPushButton *> (sender())->text().toInt();
     94        switch (num)
     95        {
     96        case 1:
    8197        {
    8298            QWidget *w = new QWidget();
    83             test (w,
     99            test (w,
    84100                  "QWidget().\n"
    85101                  "Should have a taskbar entry.\n"
     
    88104            break;
    89105        }
    90         case 1:
     106        case :
    91107        {
    92108            QWidget *w = new QWidget (this, Qt::Window);
    93             test (w,
     109            test (w,
    94110                  "QWidget (this, Qt::Window).\n"
    95111                  "Should not have a taskbar entry.\n"
     
    98114            break;
    99115        }
    100         case 2:
     116        case :
    101117        {
    102118            QWidget *w = new QDialog();
    103             test (w,
     119            test (w,
    104120                  "QDialog().\n"
    105121                  "Should have a taskbar entry.\n"
     
    108124            break;
    109125        }
    110         case 3:
     126        case :
    111127        {
    112128            QWidget *w = new QDialog (this);
    113             test (w,
     129            test (w,
    114130                  "QDialog(this).\n"
    115131                  "Should not have a taskbar entry.\n"
     
    118134            break;
    119135        }
    120         case 4:
     136        case :
    121137        {
    122138            QWidget *w = new QMessageBox();
    123             test (w,
     139            test (w,
    124140                  "QMessageBox().\n"
    125141                  "Should have a taskbar entry.\n"
     
    128144            break;
    129145        }
    130         case 5:
     146        case :
    131147        {
    132148            QWidget *w = new QMessageBox (this);
    133             test (w,
     149            test (w,
    134150                  "QMessageBox (this).\n"
    135151                  "Should not have a taskbar entry.\n"
     
    138154            break;
    139155        }
    140         case 6:
     156        case :
    141157        {
    142158            QWidget *w = new QWidget();
    143159            w->setWindowModality (Qt::WindowModal);
    144             test (w,
     160            test (w,
    145161                  "QWidget() - WindowModal.\n"
    146162                  "Should have a taskbar entry.\n"
     
    149165            break;
    150166        }
    151         case 7:
     167        case :
    152168        {
    153169            QWidget *w = new QWidget (this, Qt::Window);
    154170            w->setWindowModality (Qt::WindowModal);
    155             test (w,
     171            test (w,
    156172                  "QWidget (this, Qt::Window) - WindowModal.\n"
    157173                  "Should not have a taskbar entry.\n"
     
    160176            break;
    161177        }
    162         case 8:
     178        case :
    163179        {
    164180            QWidget *w = new QWidget(0, Qt::Dialog);
    165181            w->setWindowModality (Qt::ApplicationModal);
    166             test (w,
     182            test (w,
    167183                  "QWidget() - ApplicationModal.\n"
    168184                  "Should have a taskbar entry.\n"
     
    171187            break;
    172188        }
    173         case 9:
     189        case :
    174190        {
    175191            QWidget *w = new QWidget (this, Qt::Window);
    176192            w->setWindowModality (Qt::ApplicationModal);
    177             test (w,
     193            test (w,
    178194                  "QWidget (this, Qt::Window) - ApplicationModal.\n"
    179195                  "Should not have a taskbar entry.\n"
     
    183199        }
    184200        default:
    185             mPB->setText ("No More Tests");
    186             mPB->setEnabled (false);
    187201            return;
    188202        }
    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();
    191228    }
    192229
    193230private:
    194231
    195     int mTestNo;
    196     QPushButton *mPB;
    197     QWidget *mCurWidget;
     232    ;
     233    QPushButton *mPB;
     234    Q;
    198235};
    199236
     
    203240    app.setQuitOnLastWindowClosed (true);
    204241
    205     MyMainWidget mainWidget;
    206     mainWidget.resize (100, 100);
    207     mainWidget.show();
     242    MyMainWidget *mainWidget = new MyMainWidget();
     243    mainWidget->show();
    208244
    209245    return app.exec();
Note: See TracChangeset for help on using the changeset viewer.