web-dev-qa-db-ja.com

QtのQGridLayoutでQPushButtonサイズを設定する方法

私は現在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);
}

では、これらのボタンのサイズを実際に変更するにはどうすればよいですか?
ありがとう。

5
Theodore Tang

ウィジェットに固定サイズを使用する場合は、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

7
eyllanesc