65497


QtでC++です

ウィジェットを別のウィジェットの上に配置したときの質問です

1．メインフォーム上にボタンとフレームを配置  
2．フレームに配置するためのウィジェットを2個作成  
ウィジェットのクラスは  
form1000  
form1001

3．メインフォームのヘッダのプライベート部分に以下のように宣言

[code]

    private :
    form1000 *f1000;//ウィジェット1個目
    form1001 *f1001;//ウィジェット2個目
    
[/code]

4．コンストラクタ内でフレームの上にウィジェットを配置

[code]

    f1000 = new form1000(ui-frame);//フレームの上に貼付
    f1001 = new form1001(ui-frame);//フレームの上に貼付
    //取りあえずクローズ
    f1000->close();
    f1001->close();
    
[/code]

5．ボタンクリックイベントで

[code]

    f1000->showFullScreen();
    
[/code]

としたところ、f1000にstylesheetに設定した背景色がキャンセルされ、メイン画面が透過で見えるようになってしまいました  
多分クラスの階層がかわったせいだと思うのですがこの様な場合はスタイルシートをどのように記述したら良いのでしょうか

[code]

    Mainwindow::form1000{background-color:blue;}とか
    Mainwindow::f1000{background-color:blue;}
    #label{color:white;}
    
[/code]

など試してみたのですが・・・

質問としては、  
1．他のウィジェット上のフレームに配置したフォームへのスタイルシートの設定方法  
2．このやり方だとデザイン時と実際の動作時に見栄えがかわってしまうのでそれもなんとかしたい  
3．フレーム上に配置したウィジェットをフレーム全画面に広げたい  
です


CC BY-SA 4.0
2020-04-09T07:28:26.170
65488
2020-04-09T12:20:26.400
10098
question
css qt qt-creator ウィジェット
Qt:フォームの上に配置したウィジェットにスタイルシートが反映されないのと、フレームいっぱいに占領したい


`QWidget::showFullScreen()`は、ウインドウ(質問文の記載だと「メインフォーム」)でしか効果を表しません。

参考  
<https://doc.qt.io/qt-5/qwidget.html#showFullScreen>

> Shows the widget in full-screen mode.
>
> Calling this function only affects windows.

※文中の「windows」は、OSのそれではなく「window」の複数形。

ですので、「メインフォーム」上のウィジェットの配置を調整するのであれば、メインフォームのLayoutに  
1つだけウィジェットを配置する等の工夫をするとよいと思います。


CC BY-SA 4.0
2020-04-09T12:20:26.400
65497
2020-04-09T12:20:26.400
20098
65488
answer