qq_39677327 2022-07-01 20:00 采纳率: 94.9%
浏览 549
已结题

QT能显示界面但是按钮显示不出

按钮显示不出,是怎么回事


Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    initUI();
    createCornerBtn();
    initAddDlg();
    m_mydatabase=new CreateDb;
    m_mydatabase->initDB();  //初始化数据库
    onBtnRefresh();     //调用刷新按钮 其实就是重新查询数据库数据库
    m_operateType=Add; //初始化操作类型为Add
    ui->tabWidget->setStyleSheet("QTabBar::tab{min-width:30px;min-height:10ex}");  //设置tabbar的样式
}

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

void Widget::initUI()
{
    setWindowTitle("学生管理系统");
    m_pStuManager=new StuManager;
    ui->tabWidget->addTab(m_pStuManager,"学生管理");
    this->show();
}

void Widget::createCornerBtn()
{
    QPushButton *btnFresh=new QPushButton("刷新");
    QPushButton *btnAdd=new QPushButton("添加");
    QPushButton *btnEdit=new QPushButton("编辑");
    QPushButton *btnDel=new QPushButton("删除");

    QWidget *cornerWidget=new QWidget;

    QHBoxLayout *hLayout=new QHBoxLayout;
    hLayout->addWidget(btnFresh);
    hLayout->addWidget(btnAdd);
    hLayout->addWidget(btnEdit);
    hLayout->addWidget(btnDel);
    cornerWidget->setLayout(hLayout);

    ui->tabWidget->setCornerWidget(cornerWidget,Qt::TopRightCorner);
    connect(btnFresh,&QPushButton::clicked,this,&Widget::onBtnRefresh);
    connect(btnAdd,&QPushButton::clicked,this,&Widget::onBtnAdd);
    connect(btnEdit,&QPushButton::clicked,this,&Widget::onBtnEdit);
    connect(btnDel,&QPushButton::clicked,this,&Widget::onBtnDel);
}

现在结果:

img


理想结果:

img

  • 写回答

3条回答 默认 最新

  • 关注

    代码问题太多了。
    (1)在createCornerBtn又new一个widget没有必要
    (2)ui->tabWidget->setCornerWidget这是什么鬼,把cornerWidget设置成tablewidget中心窗口?没这么用的。
    按钮放在tab页的右侧不好实现,会出现遮挡,一般都是把按钮放在tabwidget的右上方。
    步骤如下:
    (1)先建一个垂直布局,
    (2)新建一个水平布局,并把按钮放在水平布局中
    (3)把水平布局放在垂直布局中
    (4)把tabwidget放在垂直布局中
    运行效果如下:

    img

    createCornerBtn函数修改如下:

    
    void Widget::createCornerBtn()
    {
        QPushButton *btnFresh=new QPushButton("刷新");
        QPushButton *btnAdd=new QPushButton("添加");
        QPushButton *btnEdit=new QPushButton("编辑");
        QPushButton *btnDel=new QPushButton("删除");
    
        //QWidget *cornerWidget=new QWidget; //这个不需要
    
        //水平布局
        QHBoxLayout *hLayout=new QHBoxLayout;
        hLayout->addStretch(1); //左侧加一个弹簧,让按钮能保持在界面右侧
        hLayout->addWidget(btnFresh);
        hLayout->addWidget(btnAdd);
        hLayout->addWidget(btnEdit);
        hLayout->addWidget(btnDel);
        //cornerWidget->setLayout(hLayout);//这个不需要
    
        //ui->tabWidget->setCornerWidget(cornerWidget,Qt::TopRightCorner);//这个不需要
    
    
        //垂直布局
        QVBoxLayout *vLayout = new QVBoxLayout;
        vLayout->addLayout(hLayout);
        vLayout->addWidget(ui->tabWidget);
    
        this->setLayout(vLayout);
    
    
        connect(btnFresh,&QPushButton::clicked,this,&Widget::onBtnRefresh);
        connect(btnAdd,&QPushButton::clicked,this,&Widget::onBtnAdd);
        connect(btnEdit,&QPushButton::clicked,this,&Widget::onBtnEdit);
        connect(btnDel,&QPushButton::clicked,this,&Widget::onBtnDel);
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月12日
  • 已采纳回答 11月4日
  • 创建了问题 7月1日

悬赏问题

  • ¥15 系统 24h2 专业工作站版,浏览文件夹的图库,视频,图片之类的怎样删除?
  • ¥15 怎么把512还原为520格式
  • ¥15 MATLAB的动态模态分解出现错误,以CFX非定常模拟结果为快照
  • ¥15 求高通平台Softsim调试经验
  • ¥15 canal如何实现将mysql多张表(月表)采集入库到目标表中(一张表)?
  • ¥15 wpf ScrollViewer实现冻结左侧宽度w范围内的视图
  • ¥15 栅极驱动低侧烧毁MOSFET
  • ¥30 写segy数据时出错3
  • ¥100 linux下qt运行QCefView demo报错
  • ¥50 F1C100S下的红外解码IR_RX驱动问题