【问题标题】:How to set QPushButton size in QGridLayout in Qt如何在 Qt 的 QGridLayout 中设置 QPushButton 的大小
【发布时间】:2018-04-23 21:04:37
【问题描述】:

我目前正在学习qt。我正在尝试构建一个带有 81 QPushButton 的小型 GUI 程序。
我想将这些按钮设置为 9 行和 9 列。我认为实现此布局的最佳方法是使用QGridLayout
这是运行后的样子:

我尝试了很多方法来更改按钮大小,但按钮大小仍然保持默认值。
这是我的代码:

void MainWindow::setButtons()
{
    const QSize btnSize = QSize(50, 50);
    for(int i = 0; i < 81; i++) {
        btn[i] = new QPushButton(centralWidget);
        btn[i]->setText(QString::number(i));
        btn[i]->resize(btnSize);
    }

    QGridLayout *btnLayout = new QGridLayout(centralWidget);
    for(int i = 0; i < 9; i++) {
        for(int j = 0; j < 9; j++) {
            btnLayout->addWidget(btn[j + i * 9], 0 + i, j);
            btnLayout->setSpacing(0);
        }
    }
    centralWidget->setLayout(btnLayout);
}

那么我该怎么做才能真正改变这些按钮的大小呢?
谢谢。

【问题讨论】:

  • 也许使用 setSizePolicy 方法?或者同时使用 setMaximumSize() 和 setMinimumSize() 方法来固定大小
  • 每个按钮的大小由布局动态处理。如果更改布局大小,按钮应随布局缩放。它们如何精确缩放取决于几个参数,例如 sizePolicy、minimumSize、maximumSize 和 baseSize。仅设置大小对布局中的小部件没有实际影响。你能描述一下你正在寻找的行为是什么吗?
  • @BenjaminT 我只是想构建一个扫雷游戏来练习 Qt,因为我对此很陌生。所以我希望这些按钮保持紧密的一些正方形。单击其中任何一个后,它就会消失并在下方显示标签。那么你能告诉我更具体的如何设置那些 sizePolicy、minimumSize 等吗?谢谢

标签: c++ qt qt5 qpushbutton qgridlayout


【解决方案1】:

如果您想为您的小部件使用固定大小,您必须使用setFixedSize()

const QSize btnSize = QSize(50, 50);
for(int i = 0; i < 81; i++) {
    btn[i] = new QPushButton(centralWidget);
    btn[i]->setText(QString::number(i));
    btn[i]->setFixedSize(btnSize);
}

QGridLayout *btnLayout = new QGridLayout(centralWidget);
for(int i = 0; i < 9; i++) {
    for(int j = 0; j < 9; j++) {
        btnLayout->addWidget(btn[j + i * 9], 0 + i, j);
        btnLayout->setSpacing(0);
    }
}
centralWidget->setLayout(btnLayout);

输出:

【讨论】:

    猜你喜欢
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 2020-12-28
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多