QWidget 建立視窗
如果widget未使用腹肌進行建立,則在顯示時視為視窗或頂層widget。
由于頂層widget沒有父級對象類來確定在其不再使用時删除,是以需要開發人員在應用程式中對其程序跟蹤。
在本例中,使用QWidget建立和顯示具有預設大小的視窗
QWidget *win=new QWidget();
win->resize(320,240);
win_>show();
QPushButtopn *btn1=new QPushButton(tr("press me"),win);
btn1->move(100,100);
btn1->show();
QHBoxLayout
通常,子Widget是通過使用布局對象在視窗中進行排列的,而不是通過指定位置和大小進行排列的。再次,構造一個并排排列的标簽和行編輯框Widgget:
QLabel *label1=new QLabel(tr("Name:"));
QLineEdit *edit1=new QLineEdit();
QHBoxLayout *layout1=new QHBoxLayout();
layout1->addWidget(label1);
layout1->addWidget(edit1);
window->setLayout(layout1);
【領QT開發教程學習資料,點選下方連結免費領取↓↓,先碼住不迷路~】
點選→「連結」
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
edit1=new QLineEdit();
label1=new QLabel();
label1->setText("please print:");
/*QHBoxLayout橫向添加控件,所有的控件都在一行上*/
QHBoxLayout *layout1=new QHBoxLayout();
layout1->addWidget(label1);
layout1->addWidget(edit1);
/*如果使用this作為初始化參數,則不需要使用setLayout()方法*/
this->setLayout(layout1);
}
QVBoxLayout
由于Widget可包含其他Widget,是以布局可用來提供按不同層次分組的Widget。這裡,要在顯示查詢結果的表視圖上方,視窗頂部的行編輯框旁,顯示一個标簽:
QLabel *querylabel=new QLabel("Query:");
QLineEdit *queryedit=new QLineEdit();
QTableView *resview=new QTableView();
QHBoxLayout *querylayout=new QHBoxLayout();
querylayout->addWidget(querylabel);
querylayout->addWidget(queryedit);
QVBoxLayout *mainlayout=new QVBoxLayout();
mainlayout->addWidget(querylayout);
mainlayout->addWidget(resview);
this->setLayout(mainlayout);
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
edit1=new QLineEdit();
edit2=new QLineEdit();
label1=new QLabel();
label1->setText("帳号:");
label2=new QLabel();
label2->setText("密碼:");
btn1=new QPushButton();
btn1->setText("确定");
btn2=new QPushButton();
btn2->setText("取消");
/*QVBoxLayout縱向添加控件,所有的控件在一列上*/
QVBoxLayout *layout1=new QVBoxLayout(this);
QHBoxLayout *layout2=new QHBoxLayout();
layout1->addWidget(label1);
layout1->addWidget(edit1);
layout1->addWidget(label2);
layout1->addWidget(edit2);
layout2->addWidget(btn1);
layout2->addWidget(btn2);
/*将layout2加入到layout1中,不是用setLayout()*/
layout1->addLayout(layout2);
}