【问题标题】:Horizontal Header to Large in QtDesignerQtDesigner中的水平标题变大
【发布时间】:2013-12-24 13:46:21
【问题描述】:

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

我找到了 QHeaderView::ResizeToContents 方法,但我不知道如何使用它——在 QtDesigner 中有没有办法做到这一点?

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

【问题讨论】:

    标签: python user-interface pyqt qt-designer


    【解决方案1】:

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

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

    假设您使用 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”等)。

    【讨论】:

    • 是否可以更改源代码并添加标题部分并在 qt Designer 中查看预览?
    • @user2956831。不(好吧,除非你想麻烦写一个custom widget plugin)。但是,如果您想查看更改,为什么不直接运行 main.py 脚本呢?
    • 是的,当我重新加载文件时,我在 main.py 中看到了变化,谢谢
    猜你喜欢
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 2018-10-10
    • 2018-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多