2012-12-10 62 views
0

如何将按钮单击后创建的QMenu对齐?我该如何对齐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(); 

    } 

回答

-1

首先左侧被打开,QMenuhere阅读文档。阅读QMenu::exec(),看看你能否达到你的要求。否则,如果您尝试更改menu-indicator子控件的位置,则可以按如下方式使用Qt Style Sheets

QPushButton::menu-indicator { 
    image: url(menu_indicator.png); 
    subcontrol-origin: padding; 
    subcontrol-position: left; 
} 
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); 
相关问题