Qt学习:QLabel的用法及其程序示例

主要成员函数:

1.void setText(QString); //设置label框内的文本. 
2.void hide(); //隐藏label框. 
3.void setBuddy(QWidget*); //把另一个部件设为label框的伙伴,方便快捷使用. 
4.void clear(); //清空label框内所有内容. 
5.void setPixmap(QPixmap(QString)); //设置图片. 
6.void setMovie(QMovie*); //设置电影. 
7.void setScaledContents(bool); //设置是否按比例填充满整个label框(非常重要) 
8.void setToolTip(QString); //设置信息提示,鼠标放在label框上面会自动跳出文字. 
9.void setToolTipDuration(int); //设置信息提示的持续时间,单位是毫秒. 
10.void setAlignment(Qt::Alignment); //设置label框的对齐格式. 
11.void setStyleSheet(QString); //设置label框的样式.


根据上面的QLabel的用法,下面有个关于QLabel的程序代码示例: 
下面是程序运行后的情况: 
这里写图片描述

这里写图片描述


首先进行通过Qt设计师进行布局: 
这里写图片描述

以下是”c.cpp内的代码:”代码中包含注释,方便理解.

#include "c.h"c::c(QWidget *parent)
    : QMainWindow(parent)
{    //应用Qt设计师
    ui.setupUi(this);    //修改标题.
    this->setWindowTitle(QString::fromLocal8Bit("QLabel的程序实例:"));    //给QStringList填充进去图片.
    initPictureList();    //给QMovie对象申请一块空间.
    movie = new QMovie;    //给两个QLabel对象设置新的文本.
    ui.movieLabel->setText(QString::fromLocal8Bit("未显示电影"));
    ui.pictureLabel->setText(QString::fromLocal8Bit("未显示图片"));    //设置两个label框的内容位于中间.
    ui.movieLabel->setAlignment(Qt::AlignCenter | Qt::AlignHCenter);
    ui.pictureLabel->setAlignment(Qt::AlignCenter | Qt::AlignHCenter);    //初始的时候上一张按钮时无法点击的,因为没有上一张.
    ui.previousPictureButton->setEnabled(false);    //给movieLabel设置提示框,当鼠标放在label上就会出现文字提示.
    ui.movieLabel->setToolTip(QString::fromLocal8Bit("电影真好看")); 
    //设置文字提示的持续时间为5000毫秒,也就是5秒后自动消失.
    ui.movieLabel->setToolTipDuration(1000);    //设置两个label框自动填充.
    ui.movieLabel->setScaledContents(true);
    ui.pictureLabel->setScaledContents(true);    //把printLineEdit设为printLabel的伙伴,这样的话你按alt+R就会让光标位于行编辑框内.注意:设置label名字的时候要&R.
    ui.printLabel->setBuddy(ui.printLineEdit);    //连接信号与槽.
    connect(ui.startButton, SIGNAL(clicked()), this, SLOT(startMovieLabelSlot()));
    connect(ui.continueButton, SIGNAL(clicked()), this, SLOT(continueMovieLabelSlot()));
    connect(ui.previousPictureButton, SIGNAL(clicked()), this, SLOT(showPreviousPictureSlot()));
    connect(ui.nextPictureButton, SIGNAL(clicked()), this, SLOT(showNextPictureSlot()));
}

c::~c()
{

}//点击开始按钮的槽函数.void c::startMovieLabelSlot()
{    //设置要播放的电影的路径.注意你要把gif文件放到对应的exe程序下.
    movie->setFileName(“Movie/0.gif”);    //movieLabel应用movie.
    ui.movieLabel->setMovie(movie);    //开始播放
    movie->start();
}//点击暂停/继续按钮的槽函数.void c::continueMovieLabelSlot()
{    //判断当前电影的状态.
    if (movie->state()  QMovie::Running)
    {
        movie->setPaused(true);
        ui.continueButton->setText(QString::fromLocal8Bit(“继续”));
    }    else if (movie->state() 
 QMovie::Paused)
    {
        movie->setPaused(false);
        ui.continueButton->setText(QString::fromLocal8Bit(“暂停”));
    }
}void c::initPictureList()
{    //把所有照片的路径都放到QStringList里去.
    for (int i = 0; i < 10; ++i)
    {
        QString path = “Pixmap/” + QString::number(i) + “.jpg”;
        pictureList.push_back(path);
    }
}//点击上一张按钮的槽函数.void c::showPreviousPictureSlot()
{
    --pictureNumber;
    ui.pictureLabel->setPixmap(QPixmap(pictureList[pictureNumber]));    if (pictureNumber  0)
    {
        ui.previousPictureButton->setEnabled(false);
    }
    ui.nextPictureButton->setEnabled(true);
}//点击下一张按钮的槽函数.void c::showNextPictureSlot()
{    if (ui.pictureLabel->pixmap() != 0)
        ++pictureNumber;
    ui.pictureLabel->setPixmap(QPixmap(pictureList[pictureNumber]));    if (pictureNumber 
 9)
    {
        ui.nextPictureButton->setEnabled(false);
    }    if (pictureNumber != 0)
        ui.previousPictureButton->setEnabled(true);
}123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107


以下是”c.h”内的代码:

#ifndef C_H#define C_H#include <QtWidgets/QMainWindow>#include “ui_c.h”#include <QMessageBox>#include <QLabel>#include <QPushButton>#include <QMovie>#include <QPixmap>#include <QString>class c : public QMainWindow{
    Q_OBJECTpublic:
    c(QWidget *parent = 0);
    ~c();private slots:    void startMovieLabelSlot();    void continueMovieLabelSlot();    void showPreviousPictureSlot();    void showNextPictureSlot();private:    void initPictureList();
    Ui::cClass ui;
    QMovie *movie;
    QStringList pictureList;    int pictureNumber = 0;
};#endif // C_H1234567891011121314151617181920212223242526272829303132333435

最后是”main.cpp内的代码:”

#include “c.h”#include <QtWidgets/QApplication>int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    c w;
    w.show();    return a.exec();
}1234567891011

关于QMovie类的操作可以去查阅Qt的官方文档进行学习,作一些扩展!


  • 6
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在Qt中,在QLabel控件中显示一个矩形可以通过以下几个步骤实现: 1. 创建一个QLabel对象,并将其添加到需要显示矩形的父控件中。 2. 创建一个QPixmap对象,用于绘制矩形并显示在QLabel中。 3. 创建一个QPainter对象,并传入QPixmap对象作为绘制目标。 4. 使用QPainter的绘制函数,如drawRect(),在QPixmap上绘制矩形。 5. 将绘制完成的QPixmap对象设置为QLabel的背景,使用setPixmap()函数。 6. 根据需要,可以设置QLabel的其他属性,如大小、位置、对齐方式等。 下面是一个示例代码: ```cpp #include <QtWidgets> int main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget window; QLabel label(&window); // 创建QPixmap对象 QPixmap pixmap(200, 200); // 设置画布,这里使用白色 pixmap.fill(Qt::white); // 创建QPainter对象 QPainter painter(&pixmap); // 设置画笔颜色 painter.setPen(Qt::black); // 绘制矩形 painter.drawRect(50, 50, 100, 100); // 关闭绘制 painter.end(); // 设置QLabel背景为绘制完成的QPixmap label.setPixmap(pixmap); window.show(); return app.exec(); } ``` 运行以上代码,将会显示一个大小为200x200像素的矩形在QLabel控件中。 希望以上回答能够满足您的需求,如有其他问题,请随时提问。 ### 回答2: 在Qt中,在QLabel中显示一个矩形可以通过以下步骤实现: 1. 添加一个QLabel控件到你的窗口或对话框中。可以使用Qt Designer进行界面设计,或者在代码中动态创建QLabel对象。 2. 在代码中,使用QPainter类在QLabel上绘制矩形。首先,创建一个QPixmap对象,作为绘制区域。然后,使用QPainter对象在该区域上绘制矩形。 例如,可以在QLabel的paintEvent事件处理函数中实现绘制逻辑: ```cpp void MyLabel::paintEvent(QPaintEvent *event) { // 调用基类的paintEvent处理函数 QLabel::paintEvent(event); // 创建QPixmap对象 QPixmap pixmap(size()); // 创建QPainter对象,并将其绘制目标设置为pixmap QPainter painter(&pixmap); // 设置画笔颜色和宽度 painter.setPen(QPen(Qt::black, 2)); // 绘制矩形 painter.drawRect(10, 10, width() - 20, height() - 20); // 将pixmap绘制到QLabel中 setPixmap(pixmap); } ``` 在这个例子中,矩形的位置和大小由绘制函数的参数来定义。你可以根据自己的需求调整绘制的矩形的位置和大小。 最后,在你的代码中使用自定义的QLabel派生类,替代普通的QLabel控件。将其添加到你的窗口或对话框中,即可在该控件上显示一个矩形。 ### 回答3: 在Qt中,要在QLabel中显示一个矩形,可以通过以下步骤实现: 1. 首先,我们需要创建一个QWidget类的对象,用于在QLabel中显示矩形。我们可以将这个QWidget作为参数传递给QLabel的setWidget方法。 2. 接下来,我们可以重写QWidget的绘图事件函数:paintEvent。在这个函数中,我们可以使用QPainter类来绘制矩形。 3. 在绘图事件函数中,我们可以使用QPainter的drawRect方法绘制矩形。这个方法接受四个参数,分别是矩形的左上角坐标和宽度、高度。 4. 绘制完成后,我们可以通过update方法来触发QWidget的重绘,从而在QLabel中显示出矩形。 下面是一个示例代码: ```cpp #include <QtWidgets> class RectangleWidget : public QWidget { public: RectangleWidget(QWidget *parent = nullptr) : QWidget(parent) {} protected: void paintEvent(QPaintEvent *event) override { Q_UNUSED(event); QPainter painter(this); painter.setPen(Qt::black); painter.setBrush(Qt::red); QRect rect(20, 20, 200, 100); painter.drawRect(rect); } }; int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel label; RectangleWidget rectWidget; rectWidget.setMinimumSize(240, 140); rectWidget.setObjectName("rectangle"); rectWidget.setStyleSheet("#rectangle { background-color: transparent; }"); label.setFrameStyle(QFrame::Panel | QFrame::Sunken); label.setLineWidth(2); label.setWidget(&rectWidget); label.show(); return app.exec(); } ``` 在上述代码中,我们创建了一个继承自QWidget的RectangleWidget类,重写了paintEvent函数来绘制矩形。然后,我们创建了一个QLabel对象,并将RectangleWidget对象设置为QLabel的widget。通过调用show方法,我们可以在窗口中显示出一个包含矩形的QLabel

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值