QT5中的QLabel类怎么定义?如何在一个窗口中定义多个QLabel?
#include"mainwindow.h"#include<QLabel>#include<QWidget>#include<QVBoxLayout>MainWindo...
#include "mainwindow.h"#include <QLabel>#include <QWidget>#include <QVBoxLayout>MainWindow::MainWindow(){ QVBoxLayout *mainLayout = new QVBoxLayout;
Title = new QLabel(this); Title->setText(tr("校园导航系统")); Title->resize(550,100); Title->setAlignment(Qt::AlignCenter); Title->setStyleSheet("background-color:red;font-size:40px; color:blue"); Greeting = new QLabel(tr("Welcome")); //Greeting->setText(tr("Welcome!")); Greeting->resize(550,100); Greeting->setStyleSheet("background-color:yellow;font-size:20px; color:blue"); mainLayout->addWidget(Title); mainLayout->addWidget(Greeting); setLayout(mainLayout); setWindowTitle(tr("校园导航系统")); resize(550,600);}MainWindow::~MainWindow(){}这样定义窗口中只会显示第一个QLabel的内容,不会显示第二个,怎么办。。。。 展开
Title = new QLabel(this); Title->setText(tr("校园导航系统")); Title->resize(550,100); Title->setAlignment(Qt::AlignCenter); Title->setStyleSheet("background-color:red;font-size:40px; color:blue"); Greeting = new QLabel(tr("Welcome")); //Greeting->setText(tr("Welcome!")); Greeting->resize(550,100); Greeting->setStyleSheet("background-color:yellow;font-size:20px; color:blue"); mainLayout->addWidget(Title); mainLayout->addWidget(Greeting); setLayout(mainLayout); setWindowTitle(tr("校园导航系统")); resize(550,600);}MainWindow::~MainWindow(){}这样定义窗口中只会显示第一个QLabel的内容,不会显示第二个,怎么办。。。。 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏5(财富值+成长值)
1个回答
展开全部
原因是那个mainWindow本身就具有Layout了,这个Layout包含了顶部的菜单栏、工具栏,中部的centralWidget和底部的状态栏。
所以你不能再给mainwindow添加QVBoxLayout了,你只能给centralWidget添加layout。
只要将setLayout(mainLayout);
这一句改成:
this->centralWidget()->setLayout(mainLayout);就行了。
改过之后:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QVBoxLayout *mainLayout = new QVBoxLayout;
Title = new QLabel(tr("校园导航系统"),this);
Title->resize(550,100);
Title->setAlignment(Qt::AlignCenter);
Title->setStyleSheet("background-color:red;font-size:40px; color:blue");
Greeting = new QLabel(tr("Welcome"),this);
Greeting->resize(550,100);
Greeting->setStyleSheet("background-color:yellow;font-size:20px; color:blue");
mainLayout->addWidget(Title);
mainLayout->addWidget(Greeting);
this->centralWidget()->setLayout(mainLayout);
//++++++++
setWindowTitle(tr("校园导航系统"));
resize(550,600);
}
所以你不能再给mainwindow添加QVBoxLayout了,你只能给centralWidget添加layout。
只要将setLayout(mainLayout);
这一句改成:
this->centralWidget()->setLayout(mainLayout);就行了。
改过之后:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QVBoxLayout *mainLayout = new QVBoxLayout;
Title = new QLabel(tr("校园导航系统"),this);
Title->resize(550,100);
Title->setAlignment(Qt::AlignCenter);
Title->setStyleSheet("background-color:red;font-size:40px; color:blue");
Greeting = new QLabel(tr("Welcome"),this);
Greeting->resize(550,100);
Greeting->setStyleSheet("background-color:yellow;font-size:20px; color:blue");
mainLayout->addWidget(Title);
mainLayout->addWidget(Greeting);
this->centralWidget()->setLayout(mainLayout);
//++++++++
setWindowTitle(tr("校园导航系统"));
resize(550,600);
}
追答
事实上,我还改了你程序中的别的东西。。。
Title = new QLabel(tr("校园导航系统"),this);
Greeting = new QLabel(tr("Welcome"),this);
把这两句中的this都去掉,因为这两个label父对象不应该是mainwindow,(但是在我这里两种写法都没有问题。)
你仔细对照一下我的代码,看看别的改的地方然后在试试。看看会不会出问题,然后再问我。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询