【问题标题】:Moving from GTK to Qt从 GTK 迁移到 Qt
【发布时间】:2014-06-06 11:41:59
【问题描述】:

我有一个用 python 编写的小应用程序,我想从 GTK+ 迁移到 Qt。

GTK 版本中的图形界面基本上是一个填满整个顶层窗口的选项卡小部件(gtk.Notebook)。选项卡窗口随着顶层窗口的增长和收缩而完全填满。

在 GTK 中,代码如下所示:

...
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
...
self.notebook = gtk.Notebook()
self.window.add(self.notebook)
...

如何在 Qt 中做类似的事情?我就是想不通!对于 GTK 代码,我没有使用图形工具,但现在我正在尝试使用 Qt 设计器。

JW

【问题讨论】:

  • 我建议阅读有关 Qt Designer 的教程,但我猜您缺少的步骤是,在 Qt Designer 的小部件/主窗口中放置一个 Tab 小部件后,您需要右键单击在小部件的空白部分并选择布局 -> 垂直布局。这将使它填满整个屏幕。同样,在选项卡小部件的选项卡中放置项目时,您也需要这样做。这是因为 QWidget、QMainWindow 等带有内置布局,因此在这些情况下您不必显式创建自己的布局
  • 谢谢,我想我现在明白了。

标签: python gtk pyqt


【解决方案1】:

这是您设置基本 QTabWidget 的方式:

from PyQt4.QtCore import (Qt, SIGNAL)
from PyQt4.QtGui import (QApplication, QDialog,
        QVBoxLayout, QPushButton,  QTabWidget, QWidget, )

class Form(QWidget):

    def __init__(self, parent=None):
        super(Form, self).__init__(parent)

        self.tabauto = QWidget() #set up 'auto' tab
        self.tabman = QWidget() #set up 'manual' tab
        self.tabs = QTabWidget() #set up tabs widget

        self.ButtonM = QPushButton("Manual Button")
        self.ButtonA = QPushButton("AUto Button")

        layoutO = QVBoxLayout() #set overal layout

        layoutA = QVBoxLayout()
        layoutA.addWidget(self.ButtonA)

        layoutM = QVBoxLayout()
        layoutM.addWidget(self.ButtonM)

        self.tabman.setLayout(layoutM) #Add manual layout to manual tab
        self.tabauto.setLayout(layoutA) #Add automatic layout to automatic tab
        self.tabs.addTab(self.tabauto, "Auto") #assign tabs with their layouts to the overall tab widget
        self.tabs.addTab(self.tabman, "Manual") #assign tabs with their layouts to the overall tab widget
        layoutO.addWidget(self.tabs) #add overall tab widget to overall layout
        self.setLayout(layoutO) #make the overall layout visible

app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 1970-01-01
    • 2011-01-18
    • 2017-02-06
    相关资源
    最近更新 更多