第一次打开Qt Designer时,很多新手会被密密麻麻的控件面板吓到。别担心,我们先从最简单的登录窗口开始。启动Qt Designer后选择"Main Window"模板,你会看到一个空白画布——这就是我们的创作舞台。
右侧属性编辑器里藏着几个关键参数:
试着拖拽一个Label控件到画布上,在属性面板把text改成"用户名"。这时按Ctrl+R预览,你就能看到第一个可视化成果了。我建议养成随时预览的习惯,就像写代码要经常运行测试一样。
小技巧:按住Ctrl键拖动控件可以快速复制,用方向键微调位置时配合Shift键能实现像素级移动
新手常犯的错误是直接用绝对坐标排列控件。当窗口大小变化时,这种布局会变得一团糟。Qt提供了四种智能布局方案:
在登录界面案例中,我们可以这样操作:
python复制# 手动设置布局的代码示例
layout = QVBoxLayout()
layout.addWidget(QLabel("用户名"))
layout.addWidget(QLineEdit())
self.setLayout(layout)
制作数据录入表单时,GridLayout能自动对齐标签和输入框。关键技巧是:
QLineEdit的进阶用法:
python复制# 密码输入框设置
password_edit = QLineEdit()
password_edit.setEchoMode(QLineEdit.Password) # 显示为圆点
password_edit.setPlaceholderText("6-12位字符") # 灰色提示文字
QComboBox的数据绑定:
python复制combobox = QComboBox()
combobox.addItems(["北京", "上海", "广州"])
combobox.setCurrentIndex(-1) # 初始无选中状态
QLabel不仅能显示文字:
python复制label = QLabel()
label.setPixmap(QPixmap("logo.png")) # 显示图片
label.setAlignment(Qt.AlignCenter) # 居中显示
QTableWidget打造数据看板:
python复制table = QTableWidget(5, 3) # 5行3列
table.setHorizontalHeaderLabels(["姓名", "年龄", "部门"])
table.setItem(0, 0, QTableWidgetItem("张三"))
在Qt Designer里点击"编辑信号/槽"模式(或按F4),然后:
python复制# 登录按钮点击事件
btn_login.clicked.connect(self.check_password)
def check_password(self):
if self.line_edit.text() == "admin":
QMessageBox.information(self, "提示", "登录成功")
python复制# 设置按钮样式
btn.setStyleSheet("""
QPushButton {
background: #4CAF50;
border-radius: 5px;
color: white;
}
QPushButton:hover {
background: #45a049;
}
""")
python复制with open("styles.qss") as f:
app.setStyleSheet(f.read())
python复制def add_task(self):
text = self.task_input.text()
if text:
item = QListWidgetItem(text)
item.setFlags(item.flags() | Qt.ItemIsUserCheckable)
item.setCheckState(Qt.Unchecked)
self.list_widget.addItem(item)
self.task_input.clear()
记得保存.ui文件后,用以下命令转换为Python代码:
bash复制pyuic5 -x input.ui -o output.py
在实际项目中,我习惯将生成的UI类与业务逻辑分离,通过继承的方式组织代码。比如创建一个MainWindow类继承自UI文件生成的Ui_MainWindow,这样既保持界面设计的灵活性,又便于功能扩展。