c++ - 如何在Qt中的QGridLayout中设置QPushButton的大小

标签 c++ qt qt5 qpushbutton qgridlayout

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

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

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

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

最佳答案

如果您想为小部件使用固定大小,则必须使用 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);

输出:

enter image description here

关于c++ - 如何在Qt中的QGridLayout中设置QPushButton的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47226092/

相关文章:

javascript - 如何在 V8 中公开 C++ 类成员

c++ - 如何在 C++ 中模拟成员对象

c++ - QTextDocument::DrawContents 跳过资源?

C++ Qt 无法正确解析 JSON 数组

c++ - 我如何使用 Qt Creator 从主窗口中的按钮打开一个新窗口?

windows - 怎么办 - QlineEdit : Qt5 内的 QToolButton

c++ - 如何将 dateTimeFromText 更改为仅允许分钟 %15 或禁用手动文本输入?

c++ - 放大率低于 125% 默认 Win API(101 - 124% 之间)

c++ - 是否可以重命名已在使用的 xls 文件?

qt - 确定 QTableView 是否有打开的编辑器