QT 常用控件一

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);
}

原文地址:https://www.cnblogs.com/zhanggaofeng/p/5974787.html