作者及原代码链接:跟小豆君学Qt

跟着学习;完整实现代码;示例截图;

QPushButton

  • autoDefault:自动默认按钮,当在一个对话框中,用户输入完信息后,想要点击回车确认,则这时可以设置OK按钮的autoDefault为true
  • default:是否为自动默认按钮
  • flat:是否为扁平状态。如果为true,则会去掉按钮的边框

QToolButton:工具按钮,工具按钮主要用在主窗口的工具栏中,一个工具按钮通常会显示一个图标,这个图标就代表了具体的操作。工具按钮还可以增加一个QMenu菜单;

arrowType:菜单提示的小箭头类型。

  • Qt::NoArrow:无箭头。
  • Qt::UpArrow:箭头向上。
  • Qt::DownArrow:箭头向下。
  • Qt::LeftArrow:箭头向左。
  • Qt::RightArrow:箭头向右。

autoRaise:自动突起。

pupupModel:菜单弹出模式。

  • QToolButton::DelayedPopup:当鼠标点击按钮一段时间后,才弹出菜单。
  • QToolButton::MenuButtonPopup:这个模式下会有一个小箭头显示在按钮右下角,用来提示点击按钮可以弹出一个菜单。
  • QToolButton::InstantPopup:点击按钮立刻弹出菜单,这样的话按钮本身的点击功能将无效。

toolButtonStyle:图标和文字的排版模式。

  • Qt::ToolButtonIconOnly:只显示标签。
  • Qt::ToolButtonTextOnly:只显示文字。
  • Qt::ToolButtonTextBesideIcon:文字显示在标签旁边。
  • Qt::ToolButtonTextUnderIcon:文字显示在标签下面。
  • Qt::ToolButtonFollowStyle:依赖样式的设置。

QRadioButton:单选按钮,QRadioButton否启用自动排他性;

QCheckBox:复选框按钮;

tristate:是否为三种状态。三态即:全选,全不选,部分勾选。在树控件中,常会用到三态。

示例:

代码实现:

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);ui->pushButton->setAutoRepeat(true);ui->pushButton->setAutoRepeatDelay(2000);ui->pushButton->setAutoRepeatInterval(1000);
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked()
{int val = ui->spinBox->value();ui->spinBox->setValue(val+1);
}void Widget::on_check_flat_stateChanged(int arg1)
{ui->pushButton->setFlat(arg1 == Qt::Checked);
}

QTextEdit 富文本编辑器:可以显示图片,链接,表格,对文本进行格式化处理等;

1 autoFormatting  自动格式化;

2 cursorWidth 光标宽度,默认为1个像素;

3 lineWrapMode 换行模式;

  • NoWrap 不换行。
  • WidgetWidth 到达窗口边缘处换行。默认模式。
  • FixedPixelWidth 到达固定的像素值换行。
  • FixedColumnWidth 到达固定的列号换行。

4 overwriteMode true-相当于文本编辑器中的插入模式;

5 plainText 纯文本,如果要获取编辑框的文本,可以调用toPlainText();

6 tabStopWidth 设置tab键缩进距离(像素);

7 wordWrapMode 单词换行模式

  • NoWrap: 不换行。
  • WordWrap: 在边界换行,单词本身并不会被拆分,如果当前行无法显示,则会显示在下一行。
  • ManualWrap:同NoWrap不换行。
  • WrapAnywhere: 一个单词可以分多行显示。
  • WrapAtWordBoundaryOrAnywhere: WordWrap|WrapAnywhere
  • 换行模式中,要先以lineWrapMode为标准,再看wordWrapMode

8 html QTextEdit还支持使用html标记语言;

示例:

代码实现:

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);iniTextEditTab();
}Widget::~Widget()
{delete ui;
}void Widget::on_spinBox_cursorWidth_valueChanged(int arg1)
{ui->textEdit->setCursorWidth(arg1);
}void Widget::on_spinBox_lineWrapColumnOrWidth_valueChanged(int arg1)
{ui->textEdit->setLineWrapColumnOrWidth(arg1);
}void Widget::on_spinBox_tabStopWidth_valueChanged(int arg1)
{ui->textEdit->setTabStopWidth(arg1);
}void Widget::on_checkBox_overwriteMode_toggled(bool checked)
{ui->textEdit->setOverwriteMode(checked);
}void Widget::on_checkBox_tabChangesFocus_toggled(bool checked)
{ui->textEdit->setTabChangesFocus(checked);
}void Widget::on_comboBox_lineWrapMode_currentIndexChanged(int index)
{ui->textEdit->setLineWrapMode((QTextEdit::LineWrapMode)index);
}void Widget::on_comboBox_wordWrapMode_currentIndexChanged(int index)
{ui->textEdit->setWordWrapMode((QTextOption::WrapMode)index);
}void Widget::iniTextEditTab(){QStringList textList;textList << "NoWrap" <<"WidgetWidth" << "FixedPixelWidth" << "FixedColumnWidth";ui->comboBox_lineWrapMode->addItems(textList);textList.clear();textList << "NoWrap" << "WordWrap" <<"ManualWrap" << "WrapAnywhere" << "WrapAtWordBoundaryOrAnywhere";ui->comboBox_wordWrapMode->addItems(textList);
}

QComboBox 下拉框:提供了一个选项列表;

1 count: 下拉列表中的条目总个数;

2 currentData:当前item中存储的数据,尽量将当前对象id或指针存起来;

3 currentIndex:当前选择的条目索引,activated()只在由用户交互引起的更改时发出;

4 duplicatesEnabled:新增条目是否可重复;

5 editable:是否可编辑;

如果是可编辑的,那么会有以下设置:

  • 允许用户修改列表中的每个项目,并且调用clearEditText(),可清除显示的字符串,而不改变combobox的内容。如果你是调用的clear(),那么所有条目都会被清除。
  • 新输入的字符串也可以插入到列表中,并且可以选择插入的位置。默认策略是插入到最末端,但可以使用setInsertPolicy()来更改这个插入策略。
  • 使用setValidator()可以设置验证器。
  • 调用setCompleter()设置记忆或联想功能。

6 insertPolicy:插入模式。

  • QComboBox::NoInsert:不能插入。
  • QComboBox::InsertAtTop:插入到最上边。
  • QComboBox::InsertAtCurrent:替换当前的item文字。
  • QComboBox::InsertAtBottom:插入到最后。
  • QComboBox::InsertAfterCurrent:在当前item之后插入。
  • QComboBox::InsertBeforeCurrent:在当前Item之前插入。
  • QComboBox::InsertAlphabetically:按字幕顺序插入。

7 maxCount:列表允许可添加条目的最大个数。

如果你将最大数量设置为小于当前combobox中的条目数量,则额外的条目将被截断。

8 maxVisibleItems:最大可显示条目个数。

如果你的条目有很多时,你可以设置下拉列表中最多可显示的条目个数。

对应代码实现:

#include "widget.h"
#include "ui_widget.h"
#include <QUuid>
#include <QMessageBox>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);initComboBoxTab();
}Widget::~Widget()
{delete ui;
}void Widget::initComboBoxTab(){QStringList textList;textList << "NoInsert" <<"InsertAtTop" << "InsertAtCurrent" << "InsertAtBottom"<< "InsertAfterCurrent" << "InsertBeforeCurrent" << "InsertAlphabetically";ui->combo_insertPolicy->addItems(textList);
}Student Widget::addStudent(){Student stu;QString text = ui->combo_student->currentText();QStringList textList = text.split(",");if (textList.size() == 2){bool ok;QString name = textList.at(0);uint age = textList.at(1).toUInt(&ok);if(ok){stu.setId(QUuid::createUuid().toString());stu.setName(name);stu.setAge(age);m_studentHash.insert(stu.id(), stu);}}return stu;
}void Widget::showStudent(int index){QString id = ui->combo_student->itemData(index).toString();Student stu = m_studentHash.value(id);if (stu.isValid()){ui->label_student->setText(stu.getDisplayText());}
}bool Widget::hasAddStudentItem(){return m_studentHash.size() < ui->combo_student->count();
}void Widget::on_combo_student_activated(int index)
{if (hasAddStudentItem()){Student stu = addStudent();if(stu.isValid()){ui->combo_student->setItemData(index, stu.id());}else{ui->combo_student->removeItem(index);QMessageBox::information(this, tr("input info"), tr("input error"), "OK");}}showStudent(index);
}void Widget::on_combo_insertPolicy_activated(int index)
{ui->combo_student->setInsertPolicy((QComboBox::InsertPolicy)index);
}void Widget::on_check_editable_toggled(bool checked)
{ui->combo_student->setEditable(checked);if(checked){ui->combo_student->setEditText("format: Name, age");}
}void Widget::on_check_duplicatesEnabled_toggled(bool checked)
{ui->combo_student->setDuplicatesEnabled(checked);
}void Widget::on_spinBox_maxVisibleItems_valueChanged(int arg1)
{ui->combo_student->setMaxVisibleItems(arg1);
}void Widget::on_spinBox_maxCount_valueChanged(int arg1)
{ui->combo_student->setMaxCount(arg1);
}

QSpinBox 数值输入框

1 value:当前数值。

  • QSpinBox允许用户通过点击up/down按钮或按下键盘上的上下键来选择一个值,以增加/减少当前显示的值。用户还可以手动输入值。
  • 每次值改变QSpinBox时,都会发出两个valueChanged()信号,一个提供int,另一个提供QString。

2 singleStep:单步变化值;maximum:最大值;maximum:最小值。

  • 单击up / down按钮,或者使用键盘加速器的上下箭头,将增加或减少当前singleStep()步的值。可以使用一个构造函数来设置最小值,最大值和步长,并且可以稍后使用setMinimum()、setMaximum()和setSingleStep()来更改。默认是1。
  • QSpinBox也可以作为一个循环操作,即如果范围是0 - 99,而当前的值是99且wrapping()设置为真,点击“up”将会给出0。

3 prefix,suffix:前后缀;cleanText :不包含前后缀的字符串。

  • 还可以为输入的值设置前后缀。
  • text()用来显示完整字符串(包括任何前缀和后缀)
  • 使用cleanText()可以获得不带前缀或后缀的字符串。

4 displayInterBase:显示displayInterBase进制数。例如,2进制,16进制等。

#include "weekspinbox.h"
#include <QDebug>WeekSpinBox::WeekSpinBox(QWidget* parent):QSpinBox(parent){setMinimum(1);setMaximum(7);setWrapping(true); //设置可以循环}QValidator::State WeekSpinBox::validate(QString &input, int &pos) const{int value = valueFromText(input);if (value >= 1 && value <= 7){return QValidator::Acceptable;}return QValidator::Invalid;
}int WeekSpinBox::valueFromText(const QString &text) const{int index = tr("1234567一二三四五六七").indexOf(text);return index % 7 + 1;
}QString WeekSpinBox::textFromValue(int value) const{QString txt = tr("一二三四五六天");return tr("星期%1").arg(txt.at(value-1));
}

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

alignment:文字对齐方式。

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

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

hasSelectedTextselectedText:被选中的文字。

indent:缩进像素。

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

margin:边距。

openExternalLinks:是否可以打开链接。

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

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

pixmap:图片。

scaledContents:是否填充空间。

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

默认为false。

text:文本。

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

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

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 label;
QMovie *movie = new QMovie("./wait.gif");
label.setMovie(movie);
movie->start();

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

Qt5:输入控件 QPushButton/ QToolButton/ QRadioButton/ QCheckBox/ QTextEdit/ QComboBox/ QSpinBox/ QLabel相关推荐

  1. 八、pyqt5按钮类控件——QPushButton、QRadioButton、QCheckBox

    pyqt5中常用的按钮类控件有QPushButton.QRadioButton.QCheckBox.QToolButton等.这些按钮类的基类都是QAbstracButton类.所以这些类有部分方法是 ...

  2. PyQt5 基本语法(四):输入控件

    文章目录 2. 输入控件(一) 2.1 纯键盘 2.1.1 QLineEdit 2.1.1.1 描述 2.1.1.2 控件创建 2.1.1.3 输出模式 2.1.1.4 提示字符串 2.1.1.5 清 ...

  3. INFO:InstallShield InstallScript工程中自定义界面文本输入控件的两个注意事项

    在使用InstallScript工程增加自定义界面过程中,我用到了文本输入控件(Edit Field),用于用户名和密码的输入. 首先是用户名,如果用户名长度超过我的控件长度时,发现无法再继续输入内容 ...

  4. WPF IP地址输入控件的实现

    WPF IP地址输入控件的实现 原文:WPF IP地址输入控件的实现 一.前言 WPF没有内置IP地址输入控件,因此我们需要通过自己定义实现. 我们先看一下IP地址输入控件有什么特性: 输满三个数字焦 ...

  5. 正则表达式——WPF输入控件TextBox 限定输入特定字符

    正则表达式--WPF输入控件TextBox 限定输入特定字符 原文:正则表达式--WPF输入控件TextBox 限定输入特定字符 概念: 正则表达式是对字符串操作的一种逻辑公式, 就是用事先定义好的一 ...

  6. 【antd】输入控件的思想

    antd对于form中输入控件的抽象十分简单,只要能接收value和onChange属性的组件都可以成为Form.Item的子组件,为Form对应的字段提供值.对于输入控件的抽象我认为这已经达到了极致 ...

  7. jquery-文档操作-标签取值-输入控件取值与赋值

    html 文本 值 获取标签包裹的内容 dom的属性 jquery的方法 演练 小结 dom对象,jquery对象,取值方式的对等 对象 纯文本 html文本 dom innerText innerH ...

  8. 一起学Windows Phone7开发(十三.三 输入控件)

    在Phone7中主要的输入控件其实就有两个,一个是textbox,另一个就是password控件.这两个控件中尤其是TextBox控件有了很多新特性. 一.PasswordBox:   密码框控件,用 ...

  9. 给大家介绍一个日期输入控件javascript实现,我修改了下,符合我的习惯了,^_^!...

    最终效果如图: <formname="form1"method="post"action=""> <p> <i ...

最新文章

  1. 用户不见了_03 | 为什么你设计的信息用户总是看不见
  2. TCP性能和发送接收窗口、Buffer的关系
  3. 微信小程序自定义组件4 —— 代码共享behaviors
  4. Camera2点击对焦实现
  5. Nginx (Install)
  6. php多个表查询的方法_php+mysql+ajax实现单表多字段多关键词查询的方法
  7. Triplet Loss
  8. 大数据产业发展状况及企业数据资产化运营核心
  9. 产品经理常用的方法论有哪些
  10. IDEA TODO标签使用
  11. 几万年前,孙悟空大闹地府后删库跑路了!那阎王生死簿又该怎么写呢?
  12. 成功启动electron-egg项目,electron+vue的傻瓜式搭建
  13. 机器学习-波澜壮阔40年
  14. Shopee末端物流智能提效之路
  15. SAP委外加工业务系统逻辑及控制指导
  16. eclipse集成php插件
  17. 在这款水性厚浆型涂料消泡剂面前去除泡沫就是快而又好
  18. Keil MDK-ARM软件官网最新版本的下载方法
  19. 用大白菜装centos7_U盘安装CentOS 7终极方案,简单有效
  20. QQ2008 msg.db,user.db读取

热门文章

  1. 【Rust 日报】2022-04-10 适用于Rust的异步CQL驱动
  2. 【知识总结】扩展卢卡斯定理(exLucas)
  3. NT_iOS笔记—判断iPhone6
  4. jdk9模块化简单介绍
  5. html文字自动消失了,为什么从网页上复制的文字到word上一修改后面的字就自动消失了...
  6. 计算机网络应用技术小结
  7. 【影像组学】理论学习——特征类型
  8. 心态-《不抱怨的世界》书中的精髓:通过4个步骤,成为一个不抱怨、每天都快乐的人。
  9. UI交互设计学习心得《一》
  10. CMA软件产品测试报告在哪申请,软件测试费用又是多少?