2014-12-12 4 views
0

메뉴가 첨부 된 QPushButton (잘 하위 클래스 중 하나임)이 있습니다. 드롭 다운 메뉴 표시기는 버튼의 오른쪽에 있지만 버튼을 누르면 왼쪽 아래 모서리에서 메뉴가 아래로 떨어집니다. 이것은 내 사용자에게는보기 싫은 직관적 인 것처럼 보입니다.메뉴가있는 QPushButton - 오른쪽에서 드롭

Left-side drop down menu

나는 QPushButton 소스 코드를보고, 그리고 시도했다 : 오른쪽으로 메뉴를 이동했지만 그것은 또한 표시기를 이동로 버튼을 돌파

this->setLayoutDirection(Qt::RightToLeft); 

왼쪽으로 이동하여 메뉴를 뒤로 향하게합니다.

enter image description here

오른쪽에서 메뉴 드롭을 할 수있는 또 다른 방법이 있습니까?

답변

0

표시된 경우 이동하는 QPushButton에 사용되는 메뉴에 이벤트 필터를 설치하여 수행 할 수 있습니다.

class rightSideMenuFilter : public QObject 
{ 
public: 

    bool eventFilter(QObject * obj, QEvent *event) 
    { 
     QPushButton* parentButton = dynamic_cast<QPushButton*>(obj->parent()); 
     if (!parentButton) 
      return false; 

     QMenu* menu = dynamic_cast<QMenu*>(obj); 
     if (!menu) 
      return false; 

     if (event->type() == QEvent::Show && obj == parentButton->menu()) 
     { 
      QPoint pos = menu->pos(); 
      qDebug() << "pos" << pos; 

      pos.setX(pos.x() + parentButton->width() - menu->width()); 
      parentButton->menu()->move(pos); 
      return true; 
     } 
     return false; 
    } 
}; 
관련 문제