2017-11-10 22 views
3

現在Qtを学習中です。そして私は81 QPushButtonで小さなGUIプログラムを構築しようとしています。
これらのボタンを9行9列に設定したいと思います。私がこのレイアウトを実装すると思う最良の方法はQGridLayoutです。
enter image description hereQtのQGridLayoutでQPushButtonサイズを設定する方法

私は、ボタンのサイズを変更する多くの方法を試してみましたが、ボタンのサイズはまだデフォルトのままにされています
これは、それが実行した後にどのように見えるかです。ここ
は私のコードです:

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

だから私は実際にこれらのボタンのサイズを変更するために何ができますか?
ありがとうございます。

+0

たぶんsetSizePolicyメソッドを使用できますか? または、setMaximumSize()メソッドとsetMinimumSize()メソッドの両方を使用してサイズを修正してください –

+0

各ボタンのサイズは、レイアウトによって動的に処理されます。レイアウトのサイズを変更すると、レイアウトに合わせてボタンのサイズを変更する必要があります。それらが正確にどのように拡大縮小するかは、sizePolicy、minimumSize、maximumSize、およびbaseSizeのようないくつかのパラメータに依存します。サイズを設定するだけでレイアウトのウィジェットには実際の効果はありません。あなたはあなたが探している行動は何かを記述できますか? –

+0

@BenjaminT Qtを練習するための地雷探偵ゲームを作成しようとしています。だから私はそれらのボタンをいくつかの四角形として密接にしておきたい。いずれかをクリックすると、ラベルが消えてラベルが表示されます。では、これらのsizePolicy、minimumSizeなどを設定する方法を具体的に教えてください。おかげで –

答えて

3

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

関連する問題