68449


Qt上のグリッドレイアウトで悩んでいます  
いくつかのカラム数に分割してラベルを配置したいのですが  
あらかじめ縦横の分割数を設定することは可能でしょうか

[code]

    lblDummyMainUpLeft = new QLabel();
    lblDummyMainBottomRight = new QLabel();
    //左上
    lblDummyMainUpLeft->setText("topleft(0,0)");
    lblDummyMainUpLeft->setStyleSheet("border:2px solid red;");
    //右下(4,5)のところに配置したい
    lblDummyMainBottomRight->setText("bottomright(4,5)");
    lblDummyMainBottomRight->setStyleSheet("border:2px solid red;");
    //QGridLayout上に配置
    gridmain->addWidget(lblDummyMainUpLeft,0,0,1,1);    
    gridmain->addWidget(lblDummyMainBottomRight, 4, 5 , 1 , 1); //●Y=1,X=1に配置されてしまう
    
[/code]

[![画像の説明をここに入力](https://i.stack.imgur.com/sqGyh.png)](https://i.stack.imgur.com/sqGyh.png)  
本当は細かく分割した箱があって、2個目のラベルを右下に配置したいのですが、2分割しかされませんでした  
あらかじめ縦横の分割数を決定しておくことは可能でしょうか

・・・まあ、透明なラベルを個数分敷き詰めれば上手く行くと言えば行くのですがちょっとスマートじゃないな・・と・・


CC BY-SA 4.0
2020-07-03T09:51:39.277
68246
2020-07-09T16:50:56.303
2020-07-09T16:50:56.303
3060
15047
question
c++ qt qt-creator
Qt の GridLayout にて、予め指定したグリッド数でカラムを分割したい


質問文にある

[code]

    gridmain->addWidget(lblDummyMainBottomRight, 4, 5 , 1 , 1);
    
[/code]

の実装で、グリッド(4,5)にラベルは配置できています。間のグリッドの最小サイズが0のため、  
間がないように見えています。

こういう場合、グリッドの最小サイズを行(row)、列(column)ごとに指定することができます。  
具体的には`QGridLayout`の以下のメソッドです。

  * [QGrigLayout#setRowMinimumHeight](https://doc.qt.io/qt-5/qgridlayout.html#setRowMinimumHeight)
  * [QGridLayout#setColumnMinimumWidth](https://doc.qt.io/qt-5/qgridlayout.html#setColumnMinimumWidth)

これでいかがでしょうか?


CC BY-SA 4.0
2020-07-05T03:17:46.197
68286
2020-07-05T03:17:46.197
20098
68246
answer


ありがとうございます。  
複数の解像度で動作して、基本は等間隔で並ぶのでカラムごとに  
最小、最大を一々求めるのは上手く行かなかったです

とりあえず、あらかじめダミーのラベル(この場合は横に5列、縦に4列)のからのラベルを敷き詰めて  
それから本命のパーツをはめ込んで上手く行ったのでそれで解決としました


CC BY-SA 4.0
2020-07-09T15:31:05.943
68449
2020-07-09T15:31:05.943
15047
68246
answer