Ppopulating tableview 覆盖其他 ui 个元素
Ppopulating tableview covers other ui elements
我的 QTableView 遇到了问题,因为它在用变量填充后阻挡了其他 Ui 元素。这是我的 Ui 设计
table视图填充后做什么(使用测试变量)
在 Designer 应用程序中设置 ui 时,我是否遗漏了什么?很抱歉新手问题,因为这是我第一次处理 tableviews.
填充table的代码:
def createTable(self):
# Create table
header_labels = ['Username', 'Password', 'Account Type']
profiles = [["test", "pokemon","nanana"], ["dreams", "nani","hikari"]]
self.tableWidget = QTableWidget()
self.tableWidget.setRowCount(len(profiles))
self.tableWidget.setColumnCount(len(header_labels))
self.tableWidget.setHorizontalHeaderLabels(header_labels)
self.tableWidget.verticalHeader().setVisible(False)
for i,profile in enumerate(profiles):
self.tableWidget.setItem(i, 0, QTableWidgetItem(profile[0]))
self.tableWidget.setItem(i, 1, QTableWidgetItem(profile[1]))
self.tableWidget.setItem(i, 2, QTableWidgetItem(profile[2]))
self.tableWidget.move(0, 0)
我的Ui代码(如需ui红色供参考)
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>618</width>
<height>463</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>20</x>
<y>20</y>
<width>161</width>
<height>16</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>Account Management</string>
</property>
</widget>
<widget class="QWidget" name="horizontalLayoutWidget">
<property name="geometry">
<rect>
<x>20</x>
<y>50</y>
<width>301</width>
<height>194</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="sizeConstraint">
<enum>QLayout::SetFixedSize</enum>
</property>
<item>
<widget class="QTableView" name="profileView">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="sizeAdjustPolicy">
<enum>QAbstractScrollArea::AdjustToContents</enum>
</property>
<property name="showGrid">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="verticalLayoutWidget">
<property name="geometry">
<rect>
<x>430</x>
<y>300</y>
<width>158</width>
<height>112</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QPushButton" name="addProfileButton">
<property name="text">
<string>Add Profile</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="deleteProfileButton">
<property name="text">
<string>Delete Profile</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="updateProfileButton">
<property name="text">
<string>Update Profile</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_3">
<property name="text">
<string>Logout</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections/>
</ui>
不确定 QtDesigner 是否没有创建固定的宽度和高度,但使用 .setFixedWidth()
和 .setFixedHeight()
有效。
我建议不要使用固定尺寸。这种约束仅在非常特定的场景中有用(例如,您的应用程序应该显示在具有非常特定尺寸和分辨率的显示器上,例如嵌入式系统)。一般来说,无论分辨率和屏幕大小如何,您都应该让它适当地调整大小并允许它以适当的方式呈现。
您的问题是您的小部件缺少布局:
您需要添加它,以便顶层布局负责调整您的 table 视图和按钮的大小:
我也不知道您为什么将 table 视图单独放在布局中。它没有任何意义,除非您计划将它与其他小部件分组,就像您对一组按钮所做的那样。布局只有在内部有多个小部件时才有用。否则,您可以只使用小部件的调整大小策略并丢弃布局。
我的 QTableView 遇到了问题,因为它在用变量填充后阻挡了其他 Ui 元素。这是我的 Ui 设计
table视图填充后做什么(使用测试变量)
在 Designer 应用程序中设置 ui 时,我是否遗漏了什么?很抱歉新手问题,因为这是我第一次处理 tableviews.
填充table的代码:
def createTable(self):
# Create table
header_labels = ['Username', 'Password', 'Account Type']
profiles = [["test", "pokemon","nanana"], ["dreams", "nani","hikari"]]
self.tableWidget = QTableWidget()
self.tableWidget.setRowCount(len(profiles))
self.tableWidget.setColumnCount(len(header_labels))
self.tableWidget.setHorizontalHeaderLabels(header_labels)
self.tableWidget.verticalHeader().setVisible(False)
for i,profile in enumerate(profiles):
self.tableWidget.setItem(i, 0, QTableWidgetItem(profile[0]))
self.tableWidget.setItem(i, 1, QTableWidgetItem(profile[1]))
self.tableWidget.setItem(i, 2, QTableWidgetItem(profile[2]))
self.tableWidget.move(0, 0)
我的Ui代码(如需ui红色供参考)
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>618</width>
<height>463</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>20</x>
<y>20</y>
<width>161</width>
<height>16</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>Account Management</string>
</property>
</widget>
<widget class="QWidget" name="horizontalLayoutWidget">
<property name="geometry">
<rect>
<x>20</x>
<y>50</y>
<width>301</width>
<height>194</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="sizeConstraint">
<enum>QLayout::SetFixedSize</enum>
</property>
<item>
<widget class="QTableView" name="profileView">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="sizeAdjustPolicy">
<enum>QAbstractScrollArea::AdjustToContents</enum>
</property>
<property name="showGrid">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="verticalLayoutWidget">
<property name="geometry">
<rect>
<x>430</x>
<y>300</y>
<width>158</width>
<height>112</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QPushButton" name="addProfileButton">
<property name="text">
<string>Add Profile</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="deleteProfileButton">
<property name="text">
<string>Delete Profile</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="updateProfileButton">
<property name="text">
<string>Update Profile</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_3">
<property name="text">
<string>Logout</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections/>
</ui>
不确定 QtDesigner 是否没有创建固定的宽度和高度,但使用 .setFixedWidth()
和 .setFixedHeight()
有效。
我建议不要使用固定尺寸。这种约束仅在非常特定的场景中有用(例如,您的应用程序应该显示在具有非常特定尺寸和分辨率的显示器上,例如嵌入式系统)。一般来说,无论分辨率和屏幕大小如何,您都应该让它适当地调整大小并允许它以适当的方式呈现。
您的问题是您的小部件缺少布局:
您需要添加它,以便顶层布局负责调整您的 table 视图和按钮的大小:
我也不知道您为什么将 table 视图单独放在布局中。它没有任何意义,除非您计划将它与其他小部件分组,就像您对一组按钮所做的那样。布局只有在内部有多个小部件时才有用。否则,您可以只使用小部件的调整大小策略并丢弃布局。