哦豁!别卷了 2024-09-10 18:20 采纳率: 83.3%
浏览 43
已结题

为什么我在函数中增添了按钮,但在窗口上不显示?

代码

#include "widget.h"
#include "ui_widget.h"
#include <QWidget>
#include <QPushButton>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);


    QPushButton *reserve = new QPushButton;
    reserve->show();
    reserve->setParent(this);
    reserve->setText("预约");
}

Widget::~Widget()
{
    delete ui;
}

图片

img


跟着一步一步做的,也不知道错做那儿,大哭

  • 写回答

3条回答 默认 最新

  • 一轮明月照丘壑 2024-09-10 18:21
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    根据您提供的代码和描述,看起来您在创建 Widget 类时尝试添加一个按钮 (QPushButton),但在窗口上并未显示。这可能是由几个原因造成的。让我们逐一分析并尝试解决问题。

    1. 布局管理问题:在 Qt 中,控件(如按钮)通常需要被添加到布局管理器中,以便在窗口上进行正确显示。如果父窗口 (QWidget) 没有适当的布局管理器,添加的按钮可能不会正确显示。您可以尝试将按钮添加到布局管理器中。
    2. 设置按钮位置和大小:即使添加了按钮,如果没有设置其位置或大小,它可能仍然不会显示。您可以通过设置按钮的几何属性来确保它在窗口上的可见性。
    3. UI文件问题:如果您的 Widget 类是从 Qt Designer 的 UI 文件生成的,并且您尝试在代码中动态添加控件,那么可能存在冲突或覆盖的问题。确保 UI 文件中的布局允许动态添加的控件。

    针对上述问题,您可以尝试以下修改:

    #include "widget.h"
    #include "ui_widget.h"
    #include <QWidget>
    #include <QPushButton>
    #include <QVBoxLayout> // 包含垂直布局管理器类
    
    Widget::Widget(QWidget *parent)
        : QWidget(parent)
        , ui(new Ui::Widget)
    {
        ui->setupUi(this);
    
        // 创建垂直布局管理器并添加按钮到布局中
        QVBoxLayout *layout = new QVBoxLayout(this); // 将布局设置为当前窗口的子对象
        QPushButton *reserve = new QPushButton("预约"); // 创建按钮并设置文本
        layout->addWidget(reserve); // 将按钮添加到布局中
    }
    
    Widget::~Widget()
    {
        delete ui;
    }
    

    这些修改将确保按钮被添加到布局管理器中,并在窗口上正确显示。如果问题仍然存在,请检查您的项目设置和 UI 文件是否有其他冲突或问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月2日
  • 已采纳回答 9月24日
  • 创建了问题 9月10日