2014年1月12日 星期日

【QT】Learning Chapter 1 - Dialog Layout Design 對話框排版設計


用簡單的程式碼介紹Qt Layout的排版模式,接下來的程式碼所呈現的Layout如上圖。
以下會分別以dialoglayout.cpp和dialoglayout.h檔作為範例。

Exported from Notepad++
/******************************************************/ /***************以下是dialoglayout.cpp檔***************/ /******************************************************/ #include <QtGui> #include "dialoglayout.h" DialogLayout::DialogLayout(QWidget *parent) : QDialog(parent) { oneButton = new QPushButton(tr("&One"));//&為指定快捷建Alt+O oneButton->setDefault(true);//預設按鈕為One oneButton->setEnabled(true);//預設是可被啟用的 twoButton = new QPushButton(tr("&Two"));//tr()為字串語言轉譯為其他語言 twoButton->setDefault(false); twoButton->setEnabled(true); threeButton = new QPushButton(tr("&Three")); threeButton->setDefault(false); threeButton->setEnabled(true); fourButton = new QPushButton(tr("&Four")); fourButton->setDefault(false); fourButton->setEnabled(false); fiveButton = new QPushButton(tr("&Five")); fiveButton->setDefault(false); fiveButton->setEnabled(false); sixButton = new QPushButton(tr("&Six")); sixButton->setDefault(false); sixButton->setEnabled(false); QHBoxLayout *topLeftLayout = new QHBoxLayout;//水平排版 topLeftLayout->addWidget(oneButton); topLeftLayout->addWidget(twoButton); QVBoxLayout *leftLayout = new QVBoxLayout;//垂直排版 leftLayout->addLayout(topLeftLayout); leftLayout->addWidget(threeButton); leftLayout->addWidget(fourButton); QVBoxLayout *rightLayout = new QVBoxLayout; rightLayout->addWidget(fiveButton); rightLayout->addWidget(sixButton); rightLayout->addStretch();//Stretch可以填滿剩下的空位 QHBoxLayout *mainLayout = new QHBoxLayout; mainLayout->addLayout(leftLayout); mainLayout->addLayout(rightLayout); setLayout(mainLayout); setWindowTitle(tr("Dialog Layout"));//視窗標題 setFixedHeight(sizeHint().height());//固定視窗高度 setFixedWidth(sizeHint().width());//固定視窗寬度 } /******************************************************/ /****************以下是dialoglayout.h檔****************/ /******************************************************/ #ifndef DIALOGLAYOUT_H #define DIALOGLAYOUT_H #include <QDialog> #include <QPushButton> #include <QHBoxLayout> #include <QVBoxLayout> class DialogLayout : public QDialog { public: DialogLayout(QWidget *parent = 0); private: QPushButton *oneButton; QPushButton *twoButton; QPushButton *threeButton; QPushButton *fourButton; QPushButton *fiveButton; QPushButton *sixButton; }; #endif // DIALOGLAYOUT_H

0 意見:

張貼留言