12

私のQComboBox 派生クラスは、(表示されている)画面の下端にあるQGraphicsSceneに存在しますが、下にポップアップするため、ビューから外れます。

(どのように)ポップアップをウィジェットの上に強制的に開くことは可能ですか?

次のようにshowPopupを再実装しようとしました。

void MyComboBox::showPopup()
{
     QAbstractItemView *popupView = view();
     popupView->move(0,-100);
     //popupView->window->move(0,-100);
     QComboBox::showPopup();
}

その結果、コンテンツはシフトされているように見えますが、基になるポップアップ オブジェクトはシフトされていません。この記事に示されているように、スタイルを使用して解決策を見つけることができると思いますが、 ここで役立つスタイル コントロールが見つかりません。私は Qt だけでなく C++ にもかなり慣れていないので、明らかな何かが欠けている可能性があります。

この問題について何か助けていただければ幸いです。

よろしくお願いします、

セバスチャン

4

3 に答える 3

14

ここにある情報を使用して、次のように実行できました。

void SteuerQComboBox::showPopup() {
    QComboBox::showPopup();
    QWidget *popup = this->findChild<QFrame*>(); 
    popup->move(popup->x(),popup->y()-this->height()-popup->height());
}

最初に基本クラス「showPopup」を呼び出すことが非常に重要であることに注意してください。

私の質問を読んで考えてくれた皆さん、ありがとう!

于 2012-04-09T12:34:47.183 に答える