Qt 第六章 FindDialog和三种布局。

第六章 对FindDialog有三种构建方法。


第一种是固定大小,窗体大小无法拖动和改变。






第二种  可以调整大小

不用layout来做,在构造函数中,指定了窗体大小之后,还需要重载

resizeEvent函数来对窗体重新调整:




void FindFileDialog::resizeEvent(QResizeEvent * /* event */)
{
    int extraWidth = width() - minimumWidth();
    int extraHeight = height() - minimumHeight();

    namedLabel->setGeometry(9, 9, 50, 25);
    namedLineEdit->setGeometry(65, 9, 100 + extraWidth, 25);
    lookInLabel->setGeometry(9, 40, 50, 25);
    lookInLineEdit->setGeometry(65, 40, 100 + extraWidth, 25);
    subfoldersCheckBox->setGeometry(9, 71, 156 + extraWidth, 23);
    tableWidget->setGeometry(9, 100, 156 + extraWidth,
                             50 + extraHeight);
    messageLabel->setGeometry(9, 156 + extraHeight, 156 + extraWidth,
                              25);
    findButton->setGeometry(171 + extraWidth, 9, 85, 32);
    stopButton->setGeometry(171 + extraWidth, 47, 85, 32);
    closeButton->setGeometry(171 + extraWidth, 84, 85, 32);
    helpButton->setGeometry(171 + extraWidth, 149 + extraHeight, 85,
                            32);
}






以messagelabel为例:


把高度调为17.








调整大小时,x不变,y坐标变。水平宽度变,但是垂直高度不变。

x不变,反映出来就是各个控件,在各自的子布局中,距离左边缘的位置不变。

EditLine的垂直距离也不变。








第三种是用layout来布局,而非指定大小和位置的“手动”。


(1)可以学到三种布局。

(2)学会构造QTableWidget

(3)手动布局以及重载resizeEvent函数。



感觉这个最合理,最后的MessageLabel小的恰到好处。








这个是QTableWidget。



//开始构建QTableWidget
    QStringList labels;
    labels << tr("Name") << tr("In Folder") << tr("Size")
           << tr("Modified");

    tableWidget = new QTableWidget;
    //四列的table
    tableWidget->setColumnCount(4);
    //table水平的headerlabel
    tableWidget->setHorizontalHeaderLabels(labels);



用layout来布局的,很顺眼:



各个窗体的位置

    QGridLayout *leftLayout = new QGridLayout;
    leftLayout->addWidget(namedLabel, 0, 0);
    leftLayout->addWidget(namedLineEdit, 0, 1);
    leftLayout->addWidget(lookInLabel, 1, 0);
    leftLayout->addWidget(lookInLineEdit, 1, 1);
    leftLayout->addWidget(subfoldersCheckBox, 2, 0, 1, 2);
    leftLayout->addWidget(tableWidget, 3, 0, 1, 2);
    leftLayout->addWidget(messageLabel, 4, 0, 1, 2);

    QVBoxLayout *rightLayout = new QVBoxLayout;
    rightLayout->addWidget(findButton);
    rightLayout->addWidget(stopButton);
    rightLayout->addWidget(closeButton);
    rightLayout->addStretch();
    rightLayout->addWidget(helpButton);

    QHBoxLayout *mainLayout = new QHBoxLayout;
    mainLayout->addLayout(leftLayout);
    mainLayout->addLayout(rightLayout);
    //
    setLayout(mainLayout);

    setWindowTitle(tr("Find Files or Folders"));



关闭窗体:

connect(closeButton, SIGNAL(clicked()), this, SLOT(close()));



相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付 29.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值