2012-12-10 8 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); 
를 이것은 어떻게해야입니다
관련 문제