1

QMainWindowQWidget サブクラスをインスタンス化する があります。サブクラスにリモート データを入力したいので、QWidget::show()スロットを防止し、それを無視してリクエストを行い、実際にサブクラス ウィジェットを表示します。

再実装showEvent(QShowEvent *)して、イベントを無視するようにしqDebug()ました。これは、機能して無視されていることを示していますが、ウィジェットはまだ表示されています。

私は何を取りこぼしたか ?ご協力ありがとうございました。

サブクラス:

void Groups_Materials::showEvent(QShowEvent *event)
{
 event->ignore();
 qDebug() << "Event accepted: " << event->isAccepted(); // Return: false
}

呼び方:

this->m_groupsMaterialsWidget = new Groups_Materials(this->m_parent);
this->m_groupsMaterialsWidget->setWindowModality(Qt::ApplicationModal);
this->m_groupsMaterialsWidget->setAttribute(Qt::WA_DeleteOnClose);
this->m_groupsMaterialsWidget->show();

これらのメソッドを呼び出したときにコンソールに表示される内容: Event accepted: false

4

2 に答える 2

1

«event->spontaneous()»を追加します。«true»が返される場合は、できません。

その後、ウィンドウの自発的なショーイベントが配信されます。

QWidgetサブクラスで«hide()»を呼び出すだけで、自分で«show()»を呼び出さない限り表示されません。

于 2012-12-30T17:00:42.897 に答える
0

単独で anwser を取得しました...「Qt::Sheet」フラグを使用していたため、失敗したようです。私は Mac を使用していますが、Win/Linux でも動作する可能性があります: Qt-Forum

于 2012-12-31T15:18:04.550 に答える