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);
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); }
时间: 2024-10-27 02:37:00