2014-01-27 1 views
2

두 행 위젯이있는 툴바를 만드는 방법을 알 수 없습니다. 파이썬 3/Qt4 프로젝트에서 일하고 있습니다.(Qt) 툴바에서 두 행의 위젯

내 생각 엔 : 위젯

  • 추가로

    • 가 (또는 QGridLayout는 중요하지 않습니다)

    • 수직 레이아웃을 추가 도구 모음 위젯에 위젯을 추가 레이아웃에 대한 도구 모음의 버튼

    하지만 모두 작고 빈 툴바 : 위젯을 어떻게 든 '펴는'것이 필요합니까?

    내 Python3 코드, 도구 모음에서 수직으로 두 개의 버튼을 삽입하려고 :

    self.main_toolbar = self.addToolBar('MyToolBar') 
    
        self.toolbar_widget = QtGui.QWidget(self.main_toolbar) 
        self.toolbar_layout = QtGui.QVBoxLayout() 
        self.toolbar_widget.setLayout(self.toolbar_layout) 
    
        button1 = QtGui.QPushButton(self) 
        button1.setText("button1") 
        self.toolbar_layout.addWidget(button1) 
    
        button2 = QtGui.QPushButton(self) 
        button2.setText("button2") 
        self.toolbar_layout.addWidget(button2) 
    
  • +0

    는 왜 도구 모음 위젯을 레이아웃이 아닌 단추를 추가하는 toolbar_widget.addWidget (단추 1)에 버튼을 추가하는 시도 – Metoo

    +0

    당신은 추가 할 수 없습니다? 위젯에 위젯 : 속성 오류 : 'QWidget'객체에는 'addWidget'속성이 없습니다. – suizokukan

    +0

    QToolbar에는 QAction * QToolBar :: addWidget (QWidget * widget) 메서드가 있습니다. – Metoo

    답변

    1

    그것은 간단합니다 : 당신은 정말이 도구 모음, 다른 아래 하나가 필요합니다.

    단순히 도구 위젯을 추가 할 수 없습니다. main_toolbar은 아마도 QToolBar 클래스 일 것입니다. 단순히 toolbar_widget을 추가 할 수는 없습니다.

    QToolBar의 레이아웃을 변경할 수 없습니다. 툴바는 자녀들의 레이아웃을 관리합니다. 당신은 그것을 엉망으로 만들어서는 안됩니다 - 그런 식으로 설계된 것은 아닙니다.

    툴바 위젯을 추가하는 유일한 방법은 addWidget 방법 툴바의 아니라 레이아웃 을 경유!

    코드가 잘못되었습니다. 도구 모음으로 수행 할 수있는 작업과 도구 모음으로 할 수있는 작업은 모두 다음과 같습니다.

    self.main_toolbar = self.addToolBar('MyToolBar') 
    
    button1 = QtGui.QPushButton(self) 
    button1.setText("button1") 
    self.main_toolbar.addWidget(button1) 
    
    button2 = QtGui.QPushButton(self) 
    button2.setText("button2") 
    self.main_toolbar.addWidget(button2) 
    

    원하는 작업은 도구 모음에서 지원되지 않습니다. 도구 모음은 아마도 인 경우 인 경우 둘 이상의 행에 항목을 정렬 할 수 있습니다. 그것은 아마도 스타일에 달려 있습니다. 내부 레이아웃과 내부에 두 개의 하위 버튼이있는 "키가 큰"툴바 위젯을 자유롭게 삽입 할 수 있지만 매우보기 흉하게 보입니다.

    +0

    이것은 완전히 완전히 잘못되었습니다. 다른 컨테이너 위젯처럼 툴바에 원하는 위젯을 추가 할 수 있습니다. – ekhumoro

    +0

    @ekhumoro 나는 위젯을 추가 할 수 없다고 말하지 않았으며 툴바의 레이아웃을 변경할 수 없다고 말했습니다. 툴바는 자체 레이아웃을 관리하므로'self.toolbar_widget.setLayout (self.toolbar_layout)'이 잘못되었습니다. –

    +0

    전혀 잘못이 아니에요! 질문의 코드는 완벽하게 잘 작동합니다 (나를 믿지 않으면 쉽게 테스트 할 수 있습니다). 누락 된 유일한 것은 툴바에 명시 적으로 위젯을 추가하는 것입니다. – ekhumoro

    1

    게시 한 코드는 괜찮습니다. 위젯을 툴바에 추가하는 것을 잊어 버린 것입니다.

    당신은 QToolBar.addWidget를 사용하여이 작업을 수행 할 수 있습니다

    self.main_toolbar.addWidget(self.toolbar_widget) 
    
    +0

    물론 그것은 쓰레기처럼 보일 것이며, 툴바를 사용하는 방법이 아닙니다. –

    +0

    @KubaOber. 특히 레이아웃 여백을 제거하고 간격을 조정하면 나에게는 괜찮은 것처럼 보입니다. 기본적으로 두 개의 좁은 버튼처럼 보입니다. 하나는 다른 하나의 버튼입니다. – ekhumoro