QWidgetのは:: setLayoutの:既にレイアウトを持っている「「XXXに」」QLayoutを設定しよう

 

QLayoutは、多くの場合、次の警告に似て発見したコンソールを使用している場合しかし、通常は慎重ではない、非常に重要な要素でQtアプリケーションの開発であります:

QWidgetのは:: setLayoutの:既にレイアウトを持っている「「XXXに」」QLayoutを設定しよう

 

この点でオンライン説明は少し混乱して、だけでなく、コピーするためにコピーし、主に集中しているQMainWindowの問題。しかし、実際には、注意しない場合は、任意のQWidgetの上での使用QLayoutは、この警告を表示します。実際には、二つの一般的な理由があります。

(1)明示的に設定されているQLayout後に再度のQWidgetが配置されQLayoutをこの場合はを2回呼び出しているQWidgetのsetLayoutの方法。溶液は、コードを最適化する、または1つを削除することであるQLayoutを

(2)暗黙的に提供されるQLayoutを後に再度QWidgetのが配置QLayoutをこの状況は、それを生成する方法ですか?以下のコードを見てください:

 

FootageListDock :: FootageListDock(QWidgetの* 親)
    :QDockWidget(親){ 
    setObjectName(" footagelistDock " ); 
    setWindowTitle(TR(" 映像一覧" )); 
    setSizePolicy(QSizePolicy ::優先、QSizePolicy ::拡大)。
     
    QHBoxLayout * mainLayout = 新しい QHBoxLayout(この);  // 1 
    mFootageList = 新しい FootageListWidget(この);      // 2      
   mFootageList->のsetRowCount(3)。
mFootageList-> setColumnCount(1 )。 mFootageList - > SetItem関数(00新しい QTableWidgetItem(" " )); mFootageList - > SetItem関数(10新しい QTableWidgetItem(" 2月" ))。 mFootageList - > SetItem関数(20新しい QTableWidgetItem(" " )); mFootageList - >のsetRowCount(mFootageList->をrowCount()+ 1 )。 mFootageList - > SetItem関数(30新しいです QTableWidgetItem(" 4月" )); mainLayout - > addWidget(mFootageList)。 QWidgetの * centralWidget = 新しい QWidgetの(この); centralWidget - > setLayoutの(mainLayout)。 // 3 setWidget(centralWidget)。 }

 

2つのコード1,2請求このポインタが設定されているQLayoutコンポーネントを所有する、すなわち、これは暗黙的に提供されるQWidgetのレイアウト。3及びコードの後に再度明示的呼び出しsetLayoutの()提供繰り返し対応する方法を、。そして、上記の警告がありました。この問題を回避するには、で1/2を削除することで、このポインタまたはsetLayoutのことができるの呼び出し。どんなにのどのような種類のQWidget、これに注意を払うべきではありません。

 

エディタ:

https://www.cnblogs.com/csuftzzk/p/qlayout_warnings.html

 

おすすめ

転載: www.cnblogs.com/zoneofmine/p/11413305.html