2.9 显示控件

作者: 223480235e8e | 来源:发表于2018-03-01 19:46 被阅读29次

    我们的输入控件终于结束了,今天小豆君来介绍显示控件。

    2.9.1 QLabel 标签控件

    标签控件可以用来显示文本,富文本,图片,动态图。

    QLabel通常用作交互式窗口的标签。QLabel提供了一个有用的机制来添加一个助记符,它将把键盘焦点设置在另一个控件上(称为QLabel的“伙伴”),这通过调用setBuddy()实现。

    image.png

    1 alignment:文字对齐方式。

    这个属性已经在前面很多控件讲过了,这里就不赘述了。

    默认为水平靠左,垂直居中。

    2 hasSelectedText, selectedText:被选中的文字。

    3 indent:缩进像素。

    默认情况下,缩进是- 1。

    4 margin:边距。

    5 openExternalLinks:是否可以打开链接。

    如果设置为true,将会调用QDesktopServices::openUrl()来打开链接。

    如果设置为false,则会发出linkActivated信号。

    6 pixmap:图片。

    7 scaledContents:是否填充空间。

    当启用后,如果标签显示一个图片,它将缩放图片以填充可用空间。

    默认为false。

    8 text:文本。

    文本将被解释为纯文本或富文本,这取决于文本格式设置。默认设置是Qt::AutoText。

    如果已经设置了好友,则从新文本中更新快捷键。

    9 textFormat:文本格式。

    • Qt::PlainText:被解释为纯文本。
    • Qt::RichText:被解释为富文本(html)
    • Qt::AutoText:如果可以被解释成富文本,则解释为富文本,否则为纯文本。

    10 textInteractionFlags:用户与标签的交互标识。

    • Qt::NoTextInteraction:不与用户交互。
    • Qt::TextSelectableByMouse:可以用鼠标选择,并使用上下文菜单或标准键盘快捷方式将其复制到剪贴板。
    • Qt::TextSelectableByKeyboard:将显示一个文本光标,可以用键盘上的光标键选择文本。
    • Qt::LinksAccessibleByMouse:链接可以被高亮显示并被鼠标激活。
    • Qt::LinksAccessibleByKeyboard:链接用tab选中,然后激活进入。
    • Qt::TextEditable:文本是完全可编辑的。
    • Qt::TextEditorInteraction:TextSelectableByMouse | TextSelectableByKeyboard | TextEditable
    • Qt::TextBrowserInteraction:TextSelectableByMouse | LinksAccessibleByMouse | LinksAccessibleByKeyboard

    11 wordWrap:是否可换行,默认为false

    QLabel还可以使用setMovie()来加载动态图。例如:

    QLabel label;
    QMovie *movie = new QMovie("./wait.gif");
    label.setMovie(movie);
    movie->start();
    
    

    2.9.2示例

    新建GUI项目DisplayWidget,类名为DisplayWidget,继承子QWidget

    ui界面

    image.png

    displaywidget.h

    #ifndef DISPLAYWIDGET_H
    #define DISPLAYWIDGET_H
    
    #include <QWidget>
    
    namespace Ui {
    class DisplayWidget;
    }
    
    class DisplayWidget : public QWidget
    {
        Q_OBJECT
    
    public:
        explicit DisplayWidget(QWidget *parent = 0);
        ~DisplayWidget();
    
    private slots:
        void on_lineEdit_editingFinished();
        void on_check_links_toggled(bool checked);
        void on_check_scaled_toggled(bool checked);
        void on_check_wordWrap_toggled(bool checked);
        void on_spin_indent_valueChanged(int arg1);
        void on_combo_format_currentIndexChanged(int index);
    
    private:
        Ui::DisplayWidget *ui;
    };
    
    #endif // DISPLAYWIDGET_H
    
    

    displaywidget.cpp

    #include "displaywidget.h"
    #include "ui_displaywidget.h"
    
    DisplayWidget::DisplayWidget(QWidget *parent) :
        QWidget(parent),
        ui(new Ui::DisplayWidget)
    {
        ui->setupUi(this);
    
        QStringList textList;
        textList << "PlainText" <<"RichText" << "AutoText";
        ui->combo_format->addItems(textList);
    }
    
    DisplayWidget::~DisplayWidget()
    {
        delete ui;
    }
    
    void DisplayWidget::on_lineEdit_editingFinished()
    {
        ui->label_display->setText(ui->lineEdit->text());
    }
    
    void DisplayWidget::on_check_links_toggled(bool checked)
    {
        ui->label_display->setOpenExternalLinks(checked);
    }
    
    void DisplayWidget::on_check_scaled_toggled(bool checked)
    {
        ui->label_display->setScaledContents(checked);
    }
    
    void DisplayWidget::on_check_wordWrap_toggled(bool checked)
    {
        ui->label_display->setWordWrap(checked);
    }
    
    void DisplayWidget::on_spin_indent_valueChanged(int arg1)
    {
        ui->label_display->setIndent(arg1);
    }
    
    void DisplayWidget::on_combo_format_currentIndexChanged(int index)
    {
        ui->label_display->setTextFormat((Qt::TextFormat)index);
    }
    
    

    编译运行程序,

    textFormat选择PlainText,在输入框中输入<a href='http://www.baidu.com'>百度</a>回车,将鼠标移动到右侧label上,看有什么变化。

    textFormat选择RichText,将鼠标移动到右侧label上,看又有什么变化,点击文字,这时会触发linkActivated信号。

    勾选openExternalLinks,再点击文字,此时不会触发linkActivated信号,但会调用QDesktopServices::openUrl()来打开网站。

    好了,关于QLabel的内容讲到这里。

    想要更多干货,请关注微信公众号:小豆君,只要关注,便可加入我的C++\Qt交流群一起学习。

    相关文章

      网友评论

        本文标题:2.9 显示控件

        本文链接:https://www.haomeiwen.com/subject/hdjuoxtx.html