0

ボタンのクリック後に作成された QMenu を左揃えにするにはどうすればよいですか?

ボタンの左からメニューを開くようにしたい

void MyMenu::cppSlot()
    {
        QMenu *xmenu = new QMenu;
        xmenu->addMenu("A -> Setup");
        xmenu->addMenu("B -> Setup");
        xmenu->addMenu("C -> Setup");
        xmenu->addMenu("D -> Setup");
        xmenu->addMenu("E -> Setup");
        xmenu->addMenu("F -> Setup");
        xmenu->addMenu("G -> Setup");
        xmenu->setFont(QFont ("Courier", 10));
        xmenu->setFixedWidth(250);
        xmenu->setAutoFillBackground(true);
        QPalette palette=xmenu->palette();
        palette.shadow();
        xmenu->setPalette(palette);   
        xmenu->show();

    }
4

2 に答える 2

0

私はこれが古いスレッドであることを知っていますが、将来助けが必要な人のために解決策をまだ出しています. bottom-rightボタンの隅からメニューを開きたいという同様の問題がありました。これを実装するには、 を書き直しeventFilterて、グローバル座標に対するポップアップ メニューの位置を変更する必要がありました。あなたの場合、私はあなたがそれが必要であると仮定していますbottom-leftか?これは、次のようになります。

bool MainWindow::eventFilter(QObject *obj, QEvent *event){
    if (event->type() == QEvent::Show && obj == ui->myButton->menu()){
        ui->myButton->menu()->move(ui->myButton->mapToGlobal(QPoint(0,ui->helpButton->height())));
        return true;
    }
    return false;
}

コードのどこかに、できれば を初期化してQMenuに追加した後、次のbutton行を追加する必要があります。

ui->myButton->setMenu(helpMenu);     
helpMenu->installEventFilter(this);
于 2014-11-27T15:15:58.177 に答える
-1

QMenu まず、ここのドキュメントを読んでください。読んQMenu::exec ()で、要件を達成できるかどうかを確認してください。または、menu-indicatorサブコントロールの位置を変更しようとしている場合は、次のように使用できQt Style Sheetsます。

QPushButton::menu-indicator {
     image: url(menu_indicator.png);
     subcontrol-origin: padding;
     subcontrol-position: left;
 }
于 2012-12-10T08:11:16.063 に答える