QtDesigner中的水平标题到大

时间:2013-12-07 02:44:10

标签: python user-interface pyqt qt-designer

我在QtDesigner中构建一个Gui,但我不明白我是如何添加“动态属性”的: 我尝试添加一个QTable Widget,但列的标题是大的(文本只是列中的2个字母)。 由于我的Gui中的空间原因,我只需要它们与文本一样大(或者让我们说4个字母)

我找到了 QHeaderView :: ResizeToContents方法,但我不知道如何使用它 - 有没有办法在QtDesigner中执行此操作?

我是新手,我不知道如何更改Gui背后的代码......

1 个答案:

答案 0 :(得分:1)

对于PyQt,Qt Designer的主要目的是创建应用程序的主GUI结构。它只允许为任何给定的窗口小部件修改可用属性的子集,并且它不能用于编写应用程序的主逻辑。

相反,我们的想法是从Qt Designer创建的ui文件生成一个python模块,然后将其导入到您的应用程序中,您可以在其中执行剩余的设置代码,连接信号,编写所有事件处理程序等。 / p>

假设您已使用Qt Designer创建了ui文件,并将其命名为mainwindow.ui

然后你会生成如下的python模块:

pyuic4 -o mainwindow_ui.py mainwindow.ui

接下来,您将编写一个单独的main.py脚本,该脚本从生成的模块中导入GUI类,并根据需要创建它们的实例。

所以你的main.py看起来像这样:

from PyQt4 import QtCore, QtGui
from mainwindow_ui import Ui_MainWindow

class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self, parent)
        self.setupUi(self)
        header = self.tableWidget.horizontalHeader()
        header.setResizeMode(QtGui.QHeaderView.ResizeToContents)
        ...

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

此处的基类必须与Qt Designer中的顶级窗口小部件相同(即通常是QMainWindow,QDialog或QWidget)。此外,顶级窗口小部件的objectName属性用于生成导入的GUI类的类名(前缀为“Ui_”)。上面的例子假设这被设置为“MainWindow”。

所有其他小部件的objectName属性将成为MainWindow类的属性,以便可以在其余代码中轻松访问它们。因此,始终将objectName属性设置为描述性名称(即不是“pushButton_1”,“pushButton_2”等)非常重要。