直接代码些qlabel 和 按钮qpushbutton 被遮挡

今天原本想研究下qt多线程,结果在写了一个label 和 pushubutton后发现标签被遮住了,垂直布局也没用,代码如下:

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    QLabel *label = new QLabel(this);
    label->setText("0");
    //label->setMinimumSize(100, 100);
    int height = label->height();

    QPushButton *btn = new QPushButton(this);
    btn->setText("这是一个按钮");
    btn->move(btn->pos().x(), btn->pos().y() + height);//不做的话, 按钮遮住label

    QHBoxLayout *vBoxLayout = new QHBoxLayout(this);
    vBoxLayout->addWidget(label, 1);
    vBoxLayout->addWidget(btn, 9);
    setLayout(vBoxLayout);
    this->resize(200, 200);
    }

垂直布局addwidget无效,
原因:按钮把标签部件遮住了

最后解决2个思路

  1. 设置label最小大小
label->setMinimumSize(100, 100);
  1. 使用move把按钮移动到label下
int height = label->height();

    QPushButton *btn = new QPushButton(this);
    btn->setText("这是一个按钮");
    btn->move(btn->pos().x(), btn->pos().y() + height);
按钮标签相互遮挡,该如何修改下列代码:from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QGridLayout from PyQt5.QtGui import QPixmap,QIcon,QPixmap from PyQt5.QtCore import QSize app = QApplication([]) window = QWidget() window.setWindowTitle('贩卖车') label = QLabel('请选择您要购买的饮料或食品:') button1 = QPushButton() button1.setIcon(QIcon(QPixmap('coke.png'))) button1.setIconSize(QSize(100, 100)) button2 = QPushButton() button2.setIcon(QIcon(QPixmap('water.png'))) button2.setIconSize(QSize(100, 100)) button3 = QPushButton() button3.setIcon(QIcon(QPixmap('chips.png'))) button3.setIconSize(QSize(100, 100)) button4 = QPushButton() button4.setIcon(QIcon(QPixmap('chocolate.png'))) button4.setIconSize(QSize(100, 100)) button5 = QPushButton() button5.setIcon(QIcon(QPixmap('coke.png'))) button5.setIconSize(QSize(100, 100)) button6 = QPushButton() button6.setIcon(QIcon(QPixmap('water.png'))) button6.setIconSize(QSize(100, 100)) button7 = QPushButton() button7.setIcon(QIcon(QPixmap('chips.png'))) button7.setIconSize(QSize(100, 100)) button8 = QPushButton() button8.setIcon(QIcon(QPixmap('chocolate.png'))) button8.setIconSize(QSize(100, 100)) button9 = QPushButton() button9.setIcon(QIcon(QPixmap('chocolate.png'))) button9.setIconSize(QSize(100, 100)) button10 = QPushButton() button10.setIcon(QIcon(QPixmap('chocolate.png'))) button10.setIconSize(QSize(100, 100)) count_label1 = QLabel('0') count_label2 = QLabel('0') count_label3 = QLabel('0') count_label4 = QLabel('0') count_label5 = QLabel('0') count_label6 = QLabel('0') count_label7 = QLabel('0') count_label8 = QLabel('0') count_label9 = QLabel('0') count_label10 = QLabel('0') layout = QGridLayout() layout.addWidget(label, 0, 0, 1, 5) layout.addWidget(count_label1, 1, 0) layout.addWidget(count_label2, 1, 1) layout.addWidget(count_label3, 1, 2) layout.addWidget(count_label4, 1, 3) layout.addWidget(count_label5, 1, 4) layout.addWidget(count_label6, 2, 0) layout.addWidget(count_label7, 2, 1) layout.addWidget(count_label8, 2, 2) layout.addWidget(count_label9, 2, 3) layout.addWidget(count_label10, 2, 4) layout.addWidget(button1, 1, 0) layout.addWidget(button2, 1, 1) layout.addWidget(button3, 1, 2) layout.addWidget(button4, 1, 3) layout.addWidget(button5, 1, 4) layout.addWidget(button6, 2, 0) layout.addWidget(button7, 2, 1) layout.addWidget(button8, 2, 2) layout.addWidget(button9, 2, 3) layout.addWidget(button10, 2, 4) layout.setColumnStretch(0, 1) layout.setColumnStretch(4,1)
05-29
根据我的要求修改代码: 1.在基本不改变代码的情况下使运行后的窗口扩大5倍 2.在原来代码的基础上将# 图片2位于用户名命行右侧 3.在原来代码的基础上将# 图片1至于顶端且不会遮挡文字 4.改完后的代码格式与原代码保持一致 from PyQt5 import QtCore from PyQt5.QtWidgets import * from PyQt5.QtGui import QPixmap # 新增导入QPixmap用于图片处理 class Demo(QWidget): def __init__(self,parent=None): super(Demo,self).__init__(parent) self.initUI() def initUI(self): grid = QGridLayout() #创建标签文本 label1 = QLabel() label1.setText('用户名:') label2 = QLabel() label2.setText('密码:') #创建输入文本框 text1 = QLineEdit() text2 = QLineEdit() #创建登录及取消按钮 btn1 = QPushButton() btn1.setText('登录') btn2 = QPushButton() btn2.setText('取消') grid.addWidget(label1, 0, 0,QtCore.Qt.AlignLeft) grid.addWidget(label2, 1, 0,QtCore.Qt.AlignLeft) grid.addWidget(text1, 0, 1, QtCore.Qt.AlignLeft) grid.addWidget(text2, 1, 1, QtCore.Qt.AlignLeft) grid.addWidget(btn1, 2, 0, QtCore.Qt.AlignCenter) grid.addWidget(btn2, 2, 1, QtCore.Qt.AlignCenter) # 新增图片部分 ====================================== # 图片1:右侧纵向图片(100x100) img_label1 = QLabel() img_label1.setPixmap(QPixmap("D:\奇奇怪怪的图\ding.png")) # 替换为实际图片路径 img_label1.setScaledContents(True) # 允许图片缩放 img_label1.setFixedSize(100, 100) # 设置固定大小 grid.addWidget(img_label1, 0, 0, 0, 1) # 跨2行,位于用户名/密码右侧 # 图片2:底部横向图片(200x50) img_label2 = QLabel() img_label2.setPixmap(QPixmap("D:\奇奇怪怪的图\qq1.png")) # 替换为实际图片路径 img_label2.setScaledContents(True) img_label2.setFixedSize(20, 20) grid.addWidget(img_label2, 3, 0, 1, 2) # 跨2列,位于按钮下方 # 图片3:右侧独立图片(150x150) img_label3 = QLabel() img_label3.setPixmap(QPixmap("D:\奇奇怪怪的图\qq2.png")) # 替换为实际图片路径 img_label3.setScaledContents(True) img_label3.setFixedSize(20, 20) grid.addWidget(img_label3, 1, 2) # 位于密码行右侧 # =========
最新发布
03-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值