【Qt】常用控件(QLabel,QLineEdit以及自定义控件)


Qt为我们应用程序界面开发提供的一系列的控件,下面我们介绍两种最常用一些控件,所有控件的使用方法我们都可以通过帮助文档获取。

1. QLabel

QLabel是我们最常用的控件之一,其功能很强大,我们可以用来显示文本,图片和动画等。

1.1 显示文字

通过QLabel类的setText函数设置显示的内容:

void setText(const QString &)
  • 可以显示普通文本字符串
QLable *label = new QLable;
label->setText("Hello, World!");
  • 可以显示HTML格式的字符串
    比如显示一个链接:
QLabel * label = new QLabel(this);
label ->setText("Hello, World");
label ->setText("<h1><a href=\"https://www.baidu.com\">百度一下</a></h1>");
label ->setOpenExternalLinks(true);

其中setOpenExternalLinks()函数是用来设置用户点击链接之后是否自动打开链接,如果参数指定为true则会自动打开。

1.2 显示图片

可以使用QLabel的成员函数setPixmap设置图片

void setPixmap(const QPixmap &)

首先定义QPixmap对象

QPixmap pixmap;

然后加载图片

pixmap.load(":/Image/boat.jpg");

最后将图片设置到QLabel中

QLabel *label = new QLabel;
label.setPixmap(pixmap);

1.3 显示动画

可以使用QLabel 的成员函数setMovie加载动画,可以播放gif格式的文件

void setMovie(QMovie * movie)

首先定义QMovied对象,并初始化:

QMovie *movie = new QMovie(":/Mario.gif");

播放加载的动画:

movie->start();

将动画设置到QLabel中:

QLabel *label = new QLabel;
label->setMovie(movie);

2. QLineEdit

Qt提供的单行文本编辑框。

2.1 设置/获取内容

  • 获取编辑框内容使用text(),函数声明如下:
QString	text() const
  • 设置编辑框内容
void setText(const QString &)

2.2 设置显示模式

使用QLineEdit类的setEchoMode () 函数设置文本的显示模式,函数声明:

void setEchoMode(EchoMode mode)

EchoMode是一个枚举类型,一共定义了四种显示模式:

QLineEdit::Normal	模式显示方式,按照输入的内容显示。
QLineEdit::NoEcho	不显示任何内容,此模式下无法看到用户的输入。
QLineEdit::Password	密码模式,输入的字符会根据平台转换为特殊字符。
QLineEdit::PasswordEchoOnEdit	编辑时显示字符否则显示字符作为密码。

另外,我们再使用QLineEdit显示文本的时候,希望在左侧留出一段空白的区域,那么,就可以使用QLineEdit给我们提供的setTextMargins函数:

void setTextMargins(int left, int top, int right, int bottom)

用此函数可以指定显示的文本与输入框上下左右边界的间隔的像素数。

Qt中控件的使用方法可参考Qt提供的帮助文档。

3.自定义控件

在搭建Qt窗口界面的时候,在一个项目中很多窗口,或者是窗口中的某个模块会被经常性的重复使用。一般遇到这种情况我们都会将这个窗口或者模块拿出来做成一个独立的窗口类,以备以后重复使用。

在使用Qt的ui文件搭建界面的时候,工具栏栏中只为我们提供了标准的窗口控件,如果我们想使用自定义控件怎么办?

例如:我们从QWidget派生出一个类SmallWidget,实现了一个自定窗口,

// smallwidget.h
class SmallWidget : public QWidget
{
    Q_OBJECT
public:
    explicit SmallWidget(QWidget *parent = 0);

signals:

public slots:
private:
    QSpinBox* spin;
    QSlider* slider;
};

// smallwidget.cpp
SmallWidget::SmallWidget(QWidget *parent) : QWidget(parent)
{
    spin = new QSpinBox(this);
    slider = new QSlider(Qt::Horizontal, this);

    // 创建布局对象
    QHBoxLayout* layout = new QHBoxLayout;
    // 将控件添加到布局中
    layout->addWidget(spin);
    layout->addWidget(slider);
    // 将布局设置到窗口中
    setLayout(layout);

    // 添加消息响应
    //QSpinBox移动 Slider跟着移动
    connect(spin, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged),slider, &QSlider::setValue);
    //Slider移动 SpinBox跟着移动
    connect(slider, &QSlider::valueChanged, spin, &QSpinBox::setValue);
}


那么这个SmallWidget可以作为独立的窗口显示,也可以作为一个控件来使用:
打开Qt的.ui文件,因为SmallWidget是派生自Qwidget类,所以需要在ui文件中先放入一个QWidget控件, 然后再上边鼠标右键

弹出提升窗口部件对话框

添加要提升的类的名字,然后选择 添加

添加之后,类名会显示到上边的列表框中,然后单击提升按钮,完成操作.
我们可以看到, 这个窗口对应的类从原来的QWidget变成了SmallWidget

再次运行程序,这个widget_3中就能显示出我们自定义的窗口了.

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,您的问题是如何将数据显示在Qt控件中,或者自定义一个QWidget来显示数据。我可以给您提供一些思路和示例代码。 1. QLabel控件显示数据 可以使用QLabel控件来显示文本或图片。以下是一个简单的示例代码: ```python label = QLabel('Hello World!', self) label.setAlignment(Qt.AlignCenter) ``` 这段代码会在窗口中创建一个居中显示的标签,并显示文本“Hello World!”。 如果要显示变量中的数据,只需要将数据转换为字符串并设置给标签的文本属性即可: ```python data = 123 label = QLabel(str(data), self) ``` 2. QLineEdit控件显示数据 QLineEdit控件用于接收用户输入的文本,也可以用来显示数据。以下是一个示例代码: ```python data = 'Hello World!' line_edit = QLineEdit(data, self) line_edit.setReadOnly(True) ``` 这段代码会在窗口中创建一个只读的单行文本框,并显示文本“Hello World!”。 3. 自定义QWidget显示数据 如果以上控件不能满足您的需求,您可以自定义一个QWidget控件来显示数据。以下是一个简单的示例代码: ```python class MyWidget(QWidget): def __init__(self, data, parent=None): super().__init__(parent) self.data = data def paintEvent(self, event): painter = QPainter(self) painter.drawText(self.rect(), Qt.AlignCenter, str(self.data)) ``` 这个自定义控件会在窗口中显示一个居中的文本文本内容为传入的数据。您可以根据需要自定义控件的尺寸、颜色、字体等属性。 希望以上内容能够帮助到您。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值