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関数(0、0、新しい QTableWidgetItem(" 月" )); mFootageList - > SetItem関数(1、0、新しい QTableWidgetItem(" 2月" ))。 mFootageList - > SetItem関数(2、0、新しい QTableWidgetItem(" 月" )); mFootageList - >のsetRowCount(mFootageList->をrowCount()+ 1 )。 mFootageList - > SetItem関数(3、0、新しいです 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