Qt5:输入控件 QPushButton/ QToolButton/ QRadioButton/ QCheckBox/ QTextEdit/ QComboBox/ QSpinBox/ QLabel
作者及原代码链接:跟小豆君学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 标签控件:标签控件可以用来显示文本,富文本,图片,动态图。
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 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相关推荐
- 八、pyqt5按钮类控件——QPushButton、QRadioButton、QCheckBox
pyqt5中常用的按钮类控件有QPushButton.QRadioButton.QCheckBox.QToolButton等.这些按钮类的基类都是QAbstracButton类.所以这些类有部分方法是 ...
- 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 清 ...
- INFO:InstallShield InstallScript工程中自定义界面文本输入控件的两个注意事项
在使用InstallScript工程增加自定义界面过程中,我用到了文本输入控件(Edit Field),用于用户名和密码的输入. 首先是用户名,如果用户名长度超过我的控件长度时,发现无法再继续输入内容 ...
- WPF IP地址输入控件的实现
WPF IP地址输入控件的实现 原文:WPF IP地址输入控件的实现 一.前言 WPF没有内置IP地址输入控件,因此我们需要通过自己定义实现. 我们先看一下IP地址输入控件有什么特性: 输满三个数字焦 ...
- 正则表达式——WPF输入控件TextBox 限定输入特定字符
正则表达式--WPF输入控件TextBox 限定输入特定字符 原文:正则表达式--WPF输入控件TextBox 限定输入特定字符 概念: 正则表达式是对字符串操作的一种逻辑公式, 就是用事先定义好的一 ...
- 【antd】输入控件的思想
antd对于form中输入控件的抽象十分简单,只要能接收value和onChange属性的组件都可以成为Form.Item的子组件,为Form对应的字段提供值.对于输入控件的抽象我认为这已经达到了极致 ...
- jquery-文档操作-标签取值-输入控件取值与赋值
html 文本 值 获取标签包裹的内容 dom的属性 jquery的方法 演练 小结 dom对象,jquery对象,取值方式的对等 对象 纯文本 html文本 dom innerText innerH ...
- 一起学Windows Phone7开发(十三.三 输入控件)
在Phone7中主要的输入控件其实就有两个,一个是textbox,另一个就是password控件.这两个控件中尤其是TextBox控件有了很多新特性. 一.PasswordBox: 密码框控件,用 ...
- 给大家介绍一个日期输入控件javascript实现,我修改了下,符合我的习惯了,^_^!...
最终效果如图: <formname="form1"method="post"action=""> <p> <i ...
最新文章
- 用户不见了_03 | 为什么你设计的信息用户总是看不见
- TCP性能和发送接收窗口、Buffer的关系
- 微信小程序自定义组件4 —— 代码共享behaviors
- Camera2点击对焦实现
- Nginx (Install)
- php多个表查询的方法_php+mysql+ajax实现单表多字段多关键词查询的方法
- Triplet Loss
- 大数据产业发展状况及企业数据资产化运营核心
- 产品经理常用的方法论有哪些
- IDEA TODO标签使用
- 几万年前,孙悟空大闹地府后删库跑路了!那阎王生死簿又该怎么写呢?
- 成功启动electron-egg项目,electron+vue的傻瓜式搭建
- 机器学习-波澜壮阔40年
- Shopee末端物流智能提效之路
- SAP委外加工业务系统逻辑及控制指导
- eclipse集成php插件
- 在这款水性厚浆型涂料消泡剂面前去除泡沫就是快而又好
- Keil MDK-ARM软件官网最新版本的下载方法
- 用大白菜装centos7_U盘安装CentOS 7终极方案,简单有效
- QQ2008 msg.db,user.db读取