1.字符串QString容器
QString 是一个强大而灵活的字符串容器,专为处理 Unicode 字符而设计。它提供了许多方便的方法来操作和处理字符串,使得在跨平台开发中能够轻松地进行文本操作。QString 是 Qt 开发中不可或缺的一部分,它的灵活性和强大的功能使其成为处理文本和字符串操作的理想选择.
头文件引入:#include <QString>
构造函数和析构函数
构造函数:用于创建QString对象,包括默认构造函数、从C风格字符串、QByteArray、其他QString等构造。
析构函数:~QString(),用于清理QString对象占用的资源。
字符串长度和容量
int length() const:返回字符串的长度(字符数)。
int size() const:与length()相同。
bool isEmpty() const:检查字符串是否为空。
bool isNull() const:检查字符串是否未初始化(通常用于默认构造的QString)。
void resize(int size):设置字符串的长度,如果新长度大于当前长度,则添加空字符;如果小于,则截断。
void reserve(int size):预留足够的空间以存储给定数量的字符,避免后续插入时的重新分配。
字符串比较
int compare(const QString &other, Qt::CaseSensitivity cs = Qt::CaseSensitive) const:比较两个字符串。
各种重载的operator==、operator!=、operator<等,用于字符串之间的比较。
字符串修改
QString &append(const QString &str):在字符串末尾追加另一个字符串。
QString &prepend(const QString &str):在字符串开头添加另一个字符串。
QString &insert(int position, const QString &str):在指定位置插入字符串。
QString &remove(int position, int n):从指定位置删除n个字符。
QString &replace(int position, int n, const QString &after):替换字符串中的一部分。
QString &replace(const QRegExp &rx, const QString &after):使用正则表达式替换字符串中的子串。
QString &arg(const QVariant &a, int fieldWidth = 0, char formatChar = 'g'):用于字符串格式化,将参数插入到字符串中的占位符位置。
字符串查询
int indexOf(const QString &str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const:查找子串第一次出现的位置。
int lastIndexOf(const QString &str, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const:查找子串最后一次出现的位置。
bool contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const:检查字符串是否包含子串。
bool startsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const:检查字符串是否以指定子串开始。
bool endsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const:检查字符串是否以指定子串结束。
字符串转换
QByteArray toUtf8() const:将字符串转换为UTF-8编码的QByteArray。
QByteArray toLatin1() const:将字符串转换为Latin-1编码的QByteArray。
int toInt(bool *ok = nullptr, int base = 10) const:将字符串转换为整数。
double toDouble(bool *ok = nullptr) const:将字符串转换为双精度浮点数。
QString toLower() const:将字符串转换为小写。
QString toUpper() const:将字符串转换为大写。
字符串分割和合并
QStringList split(const QString &sep, Qt::SplitBehavior behavior = Qt::KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive) const:按分隔符分割字符串。
QString join(const QStringList &strings, const QString &separator) static:使用分隔符合并字符串列表。
静态函数
QString number(int n, int base = 10):将整数转换为字符串。
QString number(double n, char format = 'g', int precision = 6):将浮点数转换为字符串。
QString fromUtf8(const char *str, int size = -1):从UTF-8编码的C风格字符串创建QString。
QString fromLatin1(const char *str, int size = -1):从Latin-1编码的C风格字符串创建QString。
字符串截取
QString mid(int position, int n = -1) const:从指定位置开始截取字符串,可选地指定截取的长度。如果不指定长度,则从指定位置截取到字符串末尾。
QString left(int n) const:从字符串左侧开始截取指定数量的字符。
QString right(int n) const:从字符串右侧开始截取指定数量的字符。
字符串处理
QString trimmed() const:去除字符串首尾的空白字符(包括空格、制表符、换行符等)。
QString simplified() const:去除字符串首尾的空白字符,并将字符串内部的连续空白字符替换为一个空格。
QString &setNum(int n, int base = 10):将整数设置为字符串的值,可选地指定基数(进制)。
QString &setNum(double n, char format = 'g', int precision = 6):将浮点数设置为字符串的值,指定格式和精度。
2.QList 动态数组容器
函数
功能
QList::QList() 构造函数,创建一个空的 QList 对象。
QList::QList(const QList &other) 复制构造函数,创建一个与给定列表相同的 QList 对象。
QList::append(const T &value) 在列表末尾添加一个元素。
QList::prepend(const T &value) 在列表开头添加一个元素。
QList::replace(int i, const T &value) 替换列表中索引为 i 的元素为给定的值。
QList::removeAt(int i) 移除列表中索引为 i 的元素。
QList::removeOne(const T &value) 移除列表中第一个匹配给定值的元素。
QList::removeAll(const T &value) 移除列表中所有匹配给定值的元素。
QList::takeAt(int i) 移除并返回列表中索引为 i 的元素。
QList::takeFirst() 移除并返回列表中的第一个元素。
QList::takeLast() 移除并返回列表中的最后一个元素。
QList::insert(int i, const T &value) 在列表中索引为 i 的位置插入一个元素。
QList::contains(const T &value) const 判断列表中是否包含给定值。
QList::count(const T &value) const 统计列表中匹配给定值的元素数量。
QList::indexOf(const T &value, int from = 0) const 返回给定值在列表中的第一个匹配项的索引,从指定位置 from 开始搜索。
QList::lastIndexOf(const T &value, int from = -1)const 返回给定值在列表中的最后一个匹配项的索引,从指定位置 from 开始反向搜索。
QList::isEmpty() const 判断列表是否为空。
QList::size() const 返回列表中元素的数量。
QList::clear() 清空列表,移除所有元素。
QList::operator=() 重载赋值运算符,将一个列表赋值给另一个列表。
QList::operator==() 重载相等运算符,判断两个列表是否相等。
QList::operator!=() 重载不等运算符,判断两个列表是否不相等。
迭代器:
QListIterator 主要函数和特点
QListIterator(const QList<T> &list): 构造函数,用于初始化迭代器并关联到给定的 QList。
hasNext() const: 检查是否有下一个元素。
next(): 返回当前元素并将迭代器移动到下一个元素。
peekNext() const: 返回当前元素但不移动迭代器。
toFront(): 将迭代器移动到列表的第一个元素。
toBack(): 将迭代器移动到列表的最后一个元素。
QMutableListIterator 主要函数和特点
QMutableListIterator(QList<T> &list): 构造函数,用于初始化可变迭代器并关联到给定的 QList。
hasNext() const: 检查是否有下一个元素。
next(): 返回当前元素并将迭代器移动到下一个元素。
peekNext() const: 返回当前元素但不移动迭代器。
toFront(): 将迭代器移动到列表的第一个元素。
toBack(): 将迭代器移动到列表的最后一个元素。
remove(): 移除迭代器当前位置的元素。
setValue(const T &value): 将迭代器当前位置的元素设置为给定值。
#include <QCoreApplication>
#include <iostream>
#include <QList>
#include <QListIterator>
#include <QMutableListIterator>
struct MyStruct
{
qint32 uid;
QString uname;
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QList<MyStruct> ptr;
MyStruct str_ptr;
str_ptr.uid = 1001;
str_ptr.uname = "admin";
ptr.append(str_ptr);
str_ptr.uid = 1002;
str_ptr.uname = "guest";
ptr.append(str_ptr);
// 使用传统方式遍历数据
for(qint32 x=0;x<ptr.count();x++)
{
std::cout << ptr.at(x).uid << std::endl;
std::cout << ptr[x].uname.toStdString().data() << std::endl;
}
// 使用只读迭代器遍历
QListIterator<MyStruct> x(ptr);
while(x.hasNext())
{
// peeknext读取下一个节点,但不影响指针变化
std::cout << x.peekNext().uid << std::endl;
std::cout << (x.peekNext().uname).toStdString().data() << std::endl;
// 最后将x指针指向下一个数据
x.next();
}
// 使用读写迭代器:如果uid=1002则将guest改为lyshark
QMutableListIterator<MyStruct> y(ptr);
while(y.hasNext())
{
// y.peekNext().uid = 9999;
if(y.peekNext().uid == 1002)
{
y.peekNext().uname = "lyshark";
}
y.next();
}
return a.exec();
}
3.QLinkeList 双向链表容器
QLinkedList::QLinkedList() 构造函数,创建一个空的 QLinkedList 对象。
QLinkedList::QLinkedList(const QLinkedList &other) 复制构造函数,创建一个与给定链表相同的 QLinkedList 对象。
QLinkedList::append(const T &value) 在链表末尾添加一个元素。
QLinkedList::prepend(const T &value) 在链表开头添加一个元素。
QLinkedList::replace(const_iterator before, const T &value) 替换链表中给定迭代器位置的元素为给定的值。
QLinkedList::remove(const T &value) 移除链表中所有匹配给定值的元素。
QLinkedList::removeOne(const T &value) 移除链表中第一个匹配给定值的元素。
QLinkedList::removeAt(int i) 移除链表中索引为 i 的元素。
QLinkedList::takeAt(int i) 移除并返回链表中索引为 i 的元素。
QLinkedList::takeFirst() 移除并返回链表中的第一个元素。
QLinkedList::takeLast() 移除并返回链表中的最后一个元素。
QLinkedList::insert(const_iterator before, const T &value) 在链表中给定迭代器位置插入一个元素。
QLinkedList::contains(const T &value) const 判断链表中是否包含给定值。
QLinkedList::count(const T &value) const 统计链表中匹配给定值的元素数量。
QLinkedList::indexOf(const T &value) const 返回给定值在链表中的第一个匹配项的索引。
QLinkedList::lastIndexOf(const T &value) const 返回给定值在链表中的最后一个匹配项的索引。
QLinkedList::isEmpty() const 判断链表是否为空。
QLinkedList::size() const 返回链表中元素的数量。
QLinkedList::clear() 清空链表,移除所有元素。
QLinkedList::begin() 返回指向链表第一个元素的迭代器。
QLinkedList::end() 返回指向链表最后一个元素之后的迭代器。
QLinkedList 提供了与 QList 类似的操作,但由于其基于双向链表实现,
特别适合于需要频繁插入和删除操作的场景。在使用上,
QLinkedList 提供了一些额外的函数,如 replace、insert 等,可以更方便地操作链表中的元素
4.QVector 动态数组容器
QVector::QVector() 构造函数,创建一个空的 QVector 对象。
QVector::QVector(int size) 构造函数,创建一个包含 size 个元素的 QVector 对象。
QVector::QVector(int size, const T &value) 构造函数,创建一个包含 size 个元素,每个元素都是给定值的 QVector 对象。
QVector::QVector(const QVector &other) 复制构造函数,创建一个与给定向量相同的 QVector 对象。
QVector::append(const T &value) 在向量末尾添加一个元素。
QVector::prepend(const T &value) 在向量开头添加一个元素。
QVector::replace(int i, const T &value) 替换向量中索引为 i 的元素为给定的值。
QVector::removeAt(int i) 移除向量中索引为 i 的元素。
QVector::removeOne(const T &value) 移除向量中第一个匹配给定值的元素。
QVector::remove(const T &value) 移除向量中所有匹配给定值的元素。
QVector::takeAt(int i) 移除并返回向量中索引为 i 的元素。
QVector::takeFirst() 移除并返回向量中的第一个元素。
QVector::takeLast() 移除并返回向量中的最后一个元素。
QVector::insert(int i, const T &value) 在向量中索引为 i 的位置插入一个元素。
QVector::fill(const T &value, int size = -1) 使用给定值填充向量,如果指定了 size,则填充到指定大小。
QVector::contains(const T &value) const 判断向量中是否包含给定值。
QVector::count(const T &value) const 统计向量中匹配给定值的元素数量。
QVector::indexOf(const T &value, int from = 0) const 返回给定值在向量中的第一个匹配项的索引,从指定位置 from 开始搜索。
QVector::lastIndexOf(const T &value, int from = -1) const 返回给定值在向量中的最后一个匹配项的索引,从指定位置 from 开始反向搜索。
QVector::isEmpty() const 判断向量是否为空。
QVector::size() const 返回向量中元素的数量。
QVector::clear() 清空向量,移除所有元素。
QVector::resize(int size) 更改向量的大小,如果新大小大于当前大小,会用默认值填充。
QVector::reserve(int size) 预留空间以容纳指定数量的元素,可提高插入操作的性能。
QVector::squeeze() 释放向量占用的多余空间。
5. QStack 栈容器
QStack::QStack() 构造函数,创建一个空的 QStack 对象。
QStack::QStack(const QStack &other) 复制构造函数,创建一个与给定栈相同的 QStack 对象。
QStack::push(const T &value) 在栈顶压入一个元素。
QStack::pop() 弹出栈顶的元素。
QStack::top() const 返回栈顶的元素,不弹出。
QStack::isEmpty() const 判断栈是否为空。
QStack::size() const 返回栈中元素的数量。
QStack::clear() 清空栈,移除所有元素。
QStack::operator=() 重载赋值运算符,将一个栈赋值给另一个栈。
QStack::operator==() 重载相等运算符,判断两个栈是否相等。
QStack::operator!=() 重载不等运算符,判断两个栈是否不相等。
6.QQueue 队列容器
QQueue::QQueue() 构造函数,创建一个空的 QQueue 对象。
QQueue::QQueue(const QQueue &other) 复制构造函数,创建一个与给定队列相同的 QQueue 对象。
QQueue::enqueue(const T &value) 在队列尾部插入一个元素。
QQueue::dequeue() 移除队列头部的元素。
QQueue::head() const 返回队列头部的元素,不移除。
QQueue::isEmpty() const 判断队列是否为空。
QQueue::size() const 返回队列中元素的数量。
QQueue::clear() 清空队列,移除所有元素。
QQueue::operator=() 重载赋值运算符,将一个队列赋值给另一个队列。
QQueue::operator==() 重载相等运算符,判断两个队列是否相等。
QQueue::operator!=() 重载不等运算符,判断两个队列是否不相等。
7.QMap
insert(const Key &key, const T &value) 向 QMap 中插入键值对。
insertMulti(const Key &key, const T &value) 向 QMap 中插入允许相同键的多个值。
remove(const Key &key) 移除指定键的元素。
value(const Key &key) const 返回指定键的值。
contains(const Key &key) const 判断是否包含指定键。
isEmpty() const 判断 QMap 是否为空。
size() const 返回 QMap 中键值对的数量。
clear() 清空 QMap 中的所有元素。
keys() const 返回 QMap 中所有键的列表。
values() const 返回 QMap 中所有值的列表。
begin() 返回指向 QMap 开始位置的迭代器。
end() 返回指向 QMap 结束位置的迭代器。
constBegin() const 返回指向 QMap 开始位置的常量迭代器。
constEnd() const 返回指向 QMap 结束位置的常量迭代器。
find(const Key &key) const 返回指向 QMap 中指定键的迭代器。
lowerBound(const Key &key) const 返回指向 QMap 中不小于指定键的第一个元素的迭代器。
upperBound(const Key &key) const 返回指向 QMap 中大于指定键的第一个元素的迭代器。
count(const Key &key) const 返回指定键的数量。
toStdMap() const 将 QMap 转换为 std::map。
8.QHash
insert(const Key &key, const T &value) 向 QHash 中插入键值对。
insertMulti(const Key &key, const T &value) 向 QHash 中插入允许相同键的多个值。
remove(const Key &key) 移除指定键的元素。
value(const Key &key) const 返回指定键的值。
contains(const Key &key) const 判断是否包含指定键。
isEmpty() const 判断 QHash 是否为空。
size() const 返回 QHash 中键值对的数量。
clear() 清空 QHash 中的所有元素。
keys() const 返回 QHash 中所有键的列表。
values() const 返回 QHash 中所有值的列表。
begin() 返回指向 QHash 开始位置的迭代器。
end() 返回指向 QHash 结束位置的迭代器。
constBegin() const 返回指向 QHash 开始位置的常量迭代器。
constEnd() const 返回指向 QHash 结束位置的常量迭代器。
find(const Key &key) const 返回指向 QHash 中指定键的迭代器。
count(const Key &key) const 返回指定键的数量。
unite(const QHash &other) 合并两个 QHash,将 other 中的元素合并到当前 QHash。
intersect(const QHash &other) 保留两个 QHash 中共有的元素,删除其他元素。
subtract(const QHash &other) 从当前 QHash 中移除与 other 共有的元素。
toStdHash() const 将 QHash 转换为 std::unordered_map。
9.QSet
insert(const T &value) 向 QSet 中插入元素。
contains(const T &value) const 判断是否包含指定元素。
remove(const T &value) 移除指定元素。
isEmpty() const 判断 QSet 是否为空。
size() const 返回 QSet 中元素的数量。
clear() 清空 QSet 中的所有元素。
unite(const QSet &other) 合并两个 QSet,将 other 中的元素合并到当前 QSet。
intersect(const QSet &other) 保留两个 QSet 中共有的元素,删除其他元素。
subtract(const QSet &other) 从当前 QSet 中移除与 other 共有的元素。
begin() 返回指向 QSet 开始位置的迭代器。
end() 返回指向 QSet 结束位置的迭代器。
constBegin() const 返回指向 QSet 开始位置的常量迭代器。
constEnd() const 返回指向 QSet 结束位置的常量迭代器。
10.PushButton按钮组件
QPushButton(const QString &text, QWidget *parent = nullptr) 构造函数,创建一个带有指定文本和父对象的按钮。
void setText(const QString &text) 设置按钮的文本。
QString text() const 获取按钮的文本。
void setIcon(const QIcon &icon) 设置按钮的图标。
QIcon icon() const 获取按钮的图标。
void setCheckable(bool checkable) 设置按钮是否可切换状态。
bool isCheckable() const 检查按钮是否可切换状态。
void setChecked(bool checked) 设置按钮的切换状态。
bool isChecked() const 获取按钮的当前切换状态。
void setEnabled(bool enabled) 启用或禁用按钮。
bool isEnabled() const 检查按钮是否启用。
void setDefault(bool isDefault) 设置按钮是否为默认按钮。
bool isDefault() const 检查按钮是否为默认按钮。
void click() 模拟按钮点击。
void setFlat(bool flat) 设置按钮是否为平面按钮。
bool isFlat() const 检查按钮是否为平面按钮。
void show() 显示按钮。
11.LineEdit单行输入组件
QLineEdit() 构造函数,创建一个空的LineEdit。
clear() 清空LineEdit中的文本。
setText(const QString &) 设置LineEdit的文本内容。
text() const 获取LineEdit的当前文本内容。
setPlaceholderText(const QString &) 设置占位文本,显示在LineEdit中,提供用户输入提示。
placeholderText() const 获取占位文本。
setMaxLength(int) 设置最大输入长度。
maxLength() const 获取最大输入长度。
setReadOnly(bool) 设置LineEdit为只读状态,用户无法编辑。
isReadOnly() const 检查LineEdit是否为只读状态。
setEchoMode(QLineEdit::EchoMode) 设置回显模式,用于处理密码等敏感信息的显示。
echoMode() const 获取当前的回显模式。
setValidator(QValidator *) 设置输入验证器,用于限制输入的内容。
validator() const 获取当前的输入验证器。
setInputMask(const QString &) 设置输入掩码,限制输入的格式。
inputMask() const 获取当前的输入掩码。
undo() 撤销上一次操作。
redo() 重做上一次撤销的操作。
cut() 剪切当前选中的文本。
copy() 复制当前选中的文本。
paste() 粘贴剪切板的内容。
selectAll() 选中LineEdit中的所有文本。
deselect() 取消文本的选择状态。
12.QMessageBox 提示框
QMessageBox::information() 显示信息框,包含图标、标题和文本信息。
QMessageBox::warning() 显示警告框,包含图标、标题和警告文本。
QMessageBox::critical() 显示错误框,包含图标、标题和错误文本。
QMessageBox::question() 显示提问框,包含图标、标题和问题文本,通常有"是"、"否"按钮。
QMessageBox::about() 显示关于框,包含图标、标题和关于文本。
QMessageBox::aboutQt() 显示关于Qt框,包含图标、标题和关于Qt文本。
QMessageBox::setWindowTitle() 设置消息框的标题。
QMessageBox::setText() 设置消息框的主要文本。
QMessageBox::setInformativeText() 设置消息框的附加信息。
QMessageBox::setIcon() 设置消息框的图标类型。
QMessageBox::setStandardButtons() 设置消息框的标准按钮集合,如确定、取消等。
QMessageBox::setDefaultButton() 设置消息框中默认的按钮,按下 Enter 键会触发默认按钮。
QMessageBox::exec() 执行消息框并等待用户的响应,返回用户选择的按钮。
QMessageBox::button() 获取消息框中指定类型的按钮,用于自定义按钮的属性和行为。
QMessageBox::addButton() 向消息框添加自定义按钮。
QMessageBox::removeButton() 从消息框移除自定义按钮。
QMessageBox::setDefaultButton() 设置默认按钮,按下 Enter 键触发默认按钮。
13.SpinBox数值微调框组件
QSpinBox(QWidget *parent = nullptr) 构造函数,创建一个整数微调框。
int value() const 获取当前微调框中的整数值。
void setValue(int value) 设置微调框的整数值。
int minimum() const 获取微调框的最小值。
void setMinimum(int min) 设置微调框的最小值。
int maximum() const 获取微调框的最大值。
void setMaximum(int max) 设置微调框的最大值。
int singleStep() const 获取单步步进值,即微调框在每次增减操作时的变化量。
void setSingleStep(int step) 设置单步步进值。
int prefix() const 获取前缀(显示在值之前的文本)。
void setPrefix(const QString &prefix) 设置前缀。
int suffix() const 获取后缀(显示在值之后的文本)。
void setSuffix(const QString &suffix) 设置后缀。
QString cleanText() const 获取文本表示的干净值,即不包含前缀和后缀的纯文本值。
bool wrapping() const 检查微调框是否启用了循环,即在达到最大或最小值时是否绕回。
void setWrapping(bool on) 启用或禁用微调框的循环。
void stepUp() 将微调框的值增加一个单步步进值。
void stepDown() 将微调框的值减少一个单步步进值。
void setAccelerated(bool on) 启用或禁用加速,即按住上下箭头时值的变化速度是否逐渐加快。
bool isAccelerated() const 检查是否启用了加速。
void setReadOnly(bool ro) 设置微调框为只读模式,禁止用户编辑值。
bool isReadOnly() const 检查微调框是否为只读模式。
void setAlignment(Qt::Alignment align) 设置微调框中文本的对齐方式。
Qt::Alignment alignment() const 获取微调框中文本的对齐方式。
void setButtonSymbols(QAbstractSpinBox::ButtonSymbols bs) 设置增减按钮的显示方式。
QAbstractSpinBox::ButtonSymbols buttonSymbols() const 获取增减按钮的显示方式。
SpinBox()用于展示单精度浮点数,而DoubleSpinBox() 则可以展示精度更高的数值
// 在组件后方设置$特殊符号
ui->spinBox->setSuffix(" $");
ui->doubleSpinBox->setSuffix(" $");
// 设置显示精度
ui->doubleSpinBox->setDecimals(6);
// 设置SpinBox数值(设置时无需转换)
ui->doubleSpinBox->setValue(total);
14.RadioButton单选框分组组件
QRadioButton(QWidget *parent = nullptr) 构造函数,创建一个单选按钮,可指定父部件。
setText(const QString &text) 设置单选按钮的文本标签。
text() const 获取单选按钮的文本标签。
setChecked(bool checked) 设置单选按钮的选中状态,true表示选中,false表示未选中。
isChecked() const 判断单选按钮是否处于选中状态。
setAutoExclusive(bool enabled) 设置是否自动将同一组中的其他单选按钮设为未选中状态。
setObjectName(const QString &name) 设置对象名称,用于样式表等。
setCheckedState(Qt::CheckState state) 设置单选按钮的选中状态,可选值有Qt::Checked、Qt::Unchecked和Qt::PartiallyChecked。
checkState() const 获取单选按钮的选中状态,返回Qt::Checked、Qt::Unchecked或Qt::PartiallyChecked。
toggled(bool checked) 信号,当单选按钮的选中状态发生改变时触发。参数checked表示是否选中。
click() 模拟点击单选按钮,触发点击事件。
setDisabled(bool disable) 设置单选按钮是否被禁用,true表示禁用,false表示启用。
setEnabled(bool enable) 设置单选按钮是否启用,true表示启用,false表示禁用。
blockSignals(bool block) 阻塞或解除阻塞信号与槽的连接,用于在某些操作时临时禁用信号槽。
15.CheckBox多选框组件
QCheckBox(QWidget *parent = nullptr) 构造函数,创建一个 QCheckBox 组件。
isChecked() const 返回复选框的当前状态,选中返回 true,否则返回 false。
setCheckState(Qt::CheckState state) 设置复选框的状态,可以是 Qt::Unchecked、Qt::PartiallyChecked 或 Qt::Checked。
checkState() const 返回复选框的当前状态,枚举类型 Qt::CheckState。
setTristate(bool) 启用或禁用三态复选框的功能。
isTristate() const 返回是否启用了三态复选框的功能。
setCheckable(bool checkable) 设置复选框是否可以被选中,true 表示可以选中,false 表示不能选中。
isChecked() const 返回复选框的当前状态,选中返回 true,否则返回 false。
setChecked(bool check) 设置复选框的状态,true 表示选中,false 表示未选中。
text() const 返回复选框的文本标签。
setText(const QString &text) 设置复选框的文本标签。
stateChanged(int)
复选框状态变化时发射的信号,参数是枚举类型 Qt::CheckState,可以是 Qt::Unchecked、Qt::PartiallyChecked 或 Qt::Checked。
16.Slider滑块条组件
QSlider(Qt::Orientation, QWidget *parent = nullptr) 构造函数,创建一个滑块控件。
Qt::Orientation参数指定方向(Qt::Horizontal或Qt::Vertical)。
setMinimum(int min) 设置滑块的最小值。
setMaximum(int max) 设置滑块的最大值。
setSingleStep(int step) 设置用户通过鼠标或键盘按键时,滑块的单步大小。
setPageStep(int step) 用户通过点击滑块轨道时,滑块的页面步长。
setValue(int value) 设置滑块的当前值。
value() const 返回滑块的当前值。
setTickInterval(int ti) 设置刻度间隔,以便显示刻度标记。
setTickPosition(TickPosition position) 设置刻度标记的位置(NoTicks、TicksAbove、TicksBelow、TicksBothSides)。
sliderPosition() const 返回滑块的位置,通常与value()相同,但可能在某些情况下不同(例如,未捕获的移动)。
setTracking(bool enable) 启用/禁用实时跟踪。如果启用,滑块在拖动时会实时更新值;禁用时,只有在释放鼠标时才更新。
setTickInterval(int ti) 设置刻度间隔,以便显示刻度标记。
setTickPosition(TickPosition position) 设置刻度标记的位置(NoTicks、TicksAbove、TicksBelow、TicksBothSides)。
17.ComboBox下拉组合框组件
QComboBox(QWidget *parent = nullptr) 构造函数,创建一个组件对象。
addItem(const QString &text, const QVariant &userData = QVariant())向组件添加一个项,可以附带用户数据。
addItems(const QStringList &texts) 向组件添加多个项,使用字符串列表。
insertItem(int index, const QString &text, const QVariant &userData = QVariant())在指定索引处插入一个项。
insertItems(int index, const QStringList &texts) 在指定索引处插入多个项。
removeItem(int index) 移除指定索引处的项。
clear() 清除组件中的所有项。
setCurrentIndex(int index) 设置组件当前选择的项的索引。
currentText() 返回当前组件中显示的文本。
currentIndex() 返回当前组件中选择的项的索引。
count() 返回组件中项的总数。
itemText(int index) 返回指定索引处项的文本。
itemData(int index, int role = Qt::UserRole) 返回指定索引处项的用户数据。
setItemText(int index, const QString &text) 设置指定索引处项的文本。
setItemData(int index, const QVariant &value, int role = Qt::UserRole)为指定索引处项设置额外的数据。
clearEditText() 清除组件的编辑文本。
setEditable(bool editable) 设置组件是否可编辑。如果可编辑,用户可以手动输入文本。
setMaxCount(int max) 设置组件中显示的最大项数。如果超过该数目,将出现垂直滚动条。
setMinimumContentsLength(int characters) 设置组件的最小内容长度,以便显示完整的项。
setModel(QAbstractItemModel *model) 设置组件的数据模型。通过模型,可以更灵活地管理组件中的项。
view() 返回组件的视图,允许对视图进行定制。
clear() 清除组件中的所有项。
showPopup() 打开组件的下拉列表。
hidePopup() 隐藏组件的下拉列表。
activated(int index) 信号,当用户选择组件中的项时发出。
currentIndexChanged(int index) 信号,当组件中的当前项发生变化时发出。
18.ProgressBar进度条组件
QProgressBar(QWidget *parent = nullptr) 构造函数,创建一个组件对象。
setRange(int minimum, int maximum) 设置组件的范围,即任务的最小和最大值。
setValue(int value) 设置组件的当前值,即任务已完成的进度。
value() const 获取组件的当前值。
setMinimum(int minimum) 设置组件的最小值。
setMaximum(int maximum) 设置组件的最大值。
reset() 重置组件,将当前值设置为最小值。
minimum() const 获取组件的最小值。
maximum() const 获取组件的最大值。
text() const 获取组件显示的文本,通常是百分比值。
setFormat(const QString &format) 设置组件显示文本的格式,支持百分比等。
setAlignment(Qt::Alignment alignment) 设置组件文本的对齐方式。
setInvertedAppearance(bool invert) 设置组件是否显示为反向进度(从右到左)。
setOrientation(Qt::Orientation orientation)设置组件的方向,可以是水平或垂直。
setStyleSheet(const QString &styleSheet) 设置组件的样式表。
setFormat(const QString &format) 设置组件的显示格式。
setAlignment(Qt::Alignment alignment) 设置组件文本的对齐方式。
19.QTimer 类
QTimer(QObject *parent = nullptr)构造函数,创建一个定时器对象。
start(int msec) 启动定时器,指定触发时间间隔(以毫秒为单位)。
stop() 停止定时器,阻止进一步的定时触发。
setInterval(int msec) 设置定时器的触发时间间隔。
setSingleShot(bool singleShot) 设置定时器是单次触发还是重复触发。
isActive() const 检查定时器是否处于活动状态。
remainingTime() const 返回离下一次定时器触发还有多少时间,如果不活动返回 -1。
timeout 在定时器超时时发出,可以与槽函数连接以执行相应操作。
setTimerType(Qt::TimerType atype)设置定时器的类型,可以是 PreciseTimer 或 CoarseTimer。
timerType() const 返回定时器的类型。
setSingleShot(bool singleShot) 设置定时器是单次触发还是重复触发。
interval() const 返回定时器的触发时间间隔。
timeout() 返回 timeout 信号的 QMetaObject::Connection 对象。
20.DateTime日期时间组件
QDate 类
QDate() 默认构造函数,创建一个表示当前日期的 QDate 对象。
QDate(int year, int month, int day) 构造函数,创建一个指定年、月、日的 QDate 对象。
isValid() 检查日期是否有效。
year() const 返回年份。
month() const 返回月份。
day() const 返回日期。
toString(const QString &format) const返回日期的字符串表示,可以通过指定格式进行格式化。
currentDate() 静态函数,返回当前系统日期的 QDate 对象。
daysInMonth() 返回当前月份的天数。
daysInYear() 返回当前年份的天数。
addDays(int days) 返回增加指定天数后的 QDate 对象。
addMonths(int months) 返回增加指定月数后的 QDate 对象。
addYears(int years) 返回增加指定年数后的 QDate 对象。
operator+(int days) 重载加法运算符,返回增加指定天数后的 QDate 对象。
operator-(int days) 重载减法运算符,返回减去指定天数后的 QDate 对象。
daysTo(const QDate &date) const 返回到指定日期的天数差。
monthsTo(const QDate &date) const 返回到指定日期的月数差。
yearsTo(const QDate &date) const 返回到指定日期的年数差。
isValid() 检查日期是否有效。
QTime 类
QTime() 默认构造函数,创建一个表示当前时间的 QTime 对象。
QTime(int h, int m, int s, int ms = 0)构造函数,创建一个指定小时、分钟、秒和毫秒的 QTime 对象。
isValid() 检查时间是否有效。
hour() const 返回小时部分。
minute() const 返回分钟部分。
second() const 返回秒部分。
msec() const 返回毫秒部分。
toString(const QString &format) const 返回时间的字符串表示,可以通过指定格式进行格式化。
currentTime() 静态函数,返回当前系统时间的 QTime 对象。
addSecs(int secs) 返回增加指定秒数后的 QTime 对象。
addMSecs(int msecs) 返回增加指定毫秒数后的 QTime 对象。
operator+(int secs) 重载加法运算符,返回增加指定秒数后的 QTime 对象。
operator-(int secs) 重载减法运算符,返回减去指定秒数后的 QTime 对象。
secsTo(const QTime &t) const 返回到指定时间的秒数差。
msecsTo(const QTime &t) const 返回到指定时间的毫秒数差。
isValid() 检查时间是否有效。
QDateTime 类
QDateTime() 默认构造函数,创建一个表示当前日期和时间的 QDateTime 对象。
QDateTime(const QDate &date, const QTime &time)构造函数,创建一个由指定日期和时间组成的 QDateTime 对象。
isValid() 检查日期和时间是否有效。
date() const 返回日期部分。
time() const 返回时间部分。
toString(const QString &format) const 返回日期和时间的字符串表示,可以通过指定格式进行格式化。
currentDateTime() 静态函数,返回当前系统日期和时间的 QDateTime 对象。
addDays(int days) 返回增加指定天数后的 QDateTime 对象。
addMonths(int months) 返回增加指定月数后的 QDateTime 对象。
addYears(int years) 返回增加指定年数后的 QDateTime 对象。
addSecs(int secs) 返回增加指定秒数后的 QDateTime 对象。
addMSecs(qint64 msecs) 返回增加指定毫秒数后的 QDateTime 对象。
operator+(int secs) 重载加法运算符,返回增加指定秒数后的 QDateTime 对象。
operator-(int secs) 重载减法运算符,返回减去指定秒数后的 QDateTime 对象。
operator-(const QDateTime &dateTime) 重载减法运算符,返回两个日期时间对象之间的时间差。
secsTo(const QDateTime &dateTime) const 返回到指定日期时间的秒数差。
msecsTo(const QDateTime &dateTime) const 返回到指定日期时间的毫秒数差。
daysTo(const QDateTime &dateTime) const 返回到指定日期时间的天数差。
monthsTo(const QDateTime &dateTime) const 返回到指定日期时间的月数差。
yearsTo(const QDateTime &dateTime) const 返回到指定日期时间的年数差。
toTime_t() 将日期时间对象转换为自 1970-01-01 00:00:00 UTC 以来的秒数。
fromTime_t(uint seconds) 从自 1970-01-01 00:00:00 UTC 以来的秒数创建日期时间对象。
21.ToolBar与MenuBar菜单组件
QToolBar 类
QToolBar(QWidget *parent = nullptr) 构造函数,创建一个 QToolBar 对象。
addAction(QAction *action) 向工具栏中添加一个动作。
addWidget(QWidget *widget) 向工具栏中添加一个小部件。
addSeparator() 向工具栏中添加一个分隔符。
clear() 清除工具栏上的所有动作和小部件。
setOrientation(Qt::Orientation orientation) 设置工具栏的方向,可以是水平 (Qt::Horizontal) 或垂直 (Qt::Vertical)。
setMovable(bool movable) 设置工具栏是否可以被用户移动。
setIconSize(const QSize &size) 设置工具栏中动作的图标大小。
setToolButtonStyle(Qt::ToolButtonStyle style)设置工具按钮的样式,可以是文本和图标一起显示、只显示图标、只显示文本等。
toggleViewAction() 返回一个切换工具栏可见性的动作。
addWidget(QWidget *widget) 在工具栏中添加一个自定义小部件。
clear() 清除工具栏上的所有动作和小部件。
setAllowedAreas(Qt::ToolBarAreas areas) 设置工具栏允许停靠的区域,可以是上、下、左、右、所有区域的组合。
setFloatable(bool floatable) 设置工具栏是否可以浮动。
setWindowTitle(const QString &title) 设置工具栏的标题。
addWidget(QWidget *widget) 在工具栏中添加一个自定义小部件。
widgetForAction(QAction *action) const 返回与给定动作相关联的小部件。
QMenuBar 类
QMenuBar(QWidget *parent = nullptr) 构造函数,创建一个 QMenuBar 对象。
addMenu(const QString &title) 添加一个具有给定标题的菜单,并返回一个指向新菜单的指针。
addMenu(QMenu *menu) 添加给定的菜单。
addSeparator() 在菜单栏上添加一个分隔符。
addActions(QList<QAction*> actions) 添加给定的动作列表到菜单栏。
clear() 清除菜单栏上的所有菜单和分隔符。
setNativeMenuBar(bool nativeMenuBar) 设置是否使用本地菜单栏,如果为 true,则菜单栏将使用本地系统的菜单栏实现。
setCornerWidget(QWidget *widget, Qt::Corner corner = Qt::TopLeftCorner)在指定的角落放置一个小部件。
addMenu(QMenu *menu) 添加给定的菜单。
setActiveAction(QAction *action) 设置活动动作,该动作将在菜单栏上显示为活动状态。
addMenu(const QString &title) 添加一个具有给定标题的菜单,并返回一个指向新菜单的指针。
setCornerWidget(QWidget *widget, Qt::Corner corner = Qt::TopLeftCorner)在指定的角落放置一个小部件。
clear() 清除菜单栏上的所有菜单和分隔符。
setNativeMenuBar(bool nativeMenuBar) 设置是否使用本地菜单栏,如果为 true,则菜单栏将使用本地系统的菜单栏实现。
setActiveAction(QAction *action) 设置活动动作,该动作将在菜单栏上显示为活动状态。
setCornerWidget(QWidget *widget, Qt::Corner corner = Qt::TopLeftCorner)在指定的角落放置一个小部件。
21.Tab与Tree组件(可以实现分页菜单)
QTabWidget 类
QTabWidget(QWidget *parent = nullptr) 构造函数,创建一个 QTabWidget 对象。
addTab(QWidget *widget, const QString &label) 向 QTabWidget 添加一个标签页,并关联一个小部件。
insertTab(int index, QWidget *widget, const QString &label)在指定位置插入一个标签页,并关联一个小部件。
removeTab(int index) 移除指定位置的标签页。
clear() 移除所有的标签页。
setCurrentIndex(int index) 设置当前显示的标签页的索引。
currentIndex() 获取当前显示的标签页的索引。
count() 获取标签页的数量。
widget(int index) 获取指定索引处的标签页关联的小部件。
tabText(int index) 获取指定索引处的标签页的文本。
setTabText(int index, const QString &text) 设置指定索引处的标签页的文本。
tabIcon(int index) 获取指定索引处的标签页的图标。
setTabIcon(int index, const QIcon &icon) 设置指定索引处的标签页的图标。
tabBar() 返回 QTabBar 对象,允许对标签栏进行更高级的操作。
tabBar()->setTabButton(int index, QTabBar::ButtonPosition position, QWidget *widget)在指定位置添加一个小部件按钮到标签页。
setTabEnabled(int index, bool enable) 启用或禁用指定索引处的标签页。
isTabEnabled(int index) 检查指定索引处的标签页是否启用。
setTabToolTip(int index, const QString &tip) 设置指定索引处的标签页的工具提示。
tabToolTip(int index) 获取指定索引处的标签页的工具提示。
setTabWhatsThis(int index, const QString &text) 设置指定索引处的标签页的 What's This 文本。
tabWhatsThis(int index) 获取指定索引处的标签页的 What's This 文本。
currentChanged(int index) 当前标签页发生变化时发出的信号,连接到槽函数以执行相应的操作。
tabCloseRequested(int index) 用户请求关闭标签页时发出的信号,连接到槽函数以执行相应的操作。
QTreeWidget 类
QTreeWidget(QWidget *parent = nullptr) 构造函数,创建一个 QTreeWidget 对象。
addTopLevelItem(QTreeWidgetItem *item) 向树中添加一个顶级项。
insertTopLevelItem(int index, QTreeWidgetItem *item) 在指定位置插入一个顶级项。
takeTopLevelItem(int index) 移除并返回指定位置的顶级项。
clear() 移除所有的项。
topLevelItemCount() 获取顶级项的数量。
topLevelItem(int index) 获取指定位置的顶级项。
invisibleRootItem() 获取树的不可见根项。
setCurrentItem(QTreeWidgetItem *item) 设置当前项。
currentItem() 获取当前项。
setItemWidget(QTreeWidgetItem *item, int column, QWidget *widget)在指定项和列上设置一个小部件。
itemWidget(QTreeWidgetItem *item, int column) 获取指定项和列上的小部件。
editItem(QTreeWidgetItem *item, int column) 编辑指定项和列的数据。
closePersistentEditor(QTreeWidgetItem *item, int column) 关闭指定项和列上的持久编辑器。
collapseItem(QTreeWidgetItem *item) 折叠指定项。
expandItem(QTreeWidgetItem *item) 展开指定项。
isItemExpanded(QTreeWidgetItem *item) 检查指定项是否展开。
setItemExpanded(QTreeWidgetItem *item, bool expand) 设置指定项的展开状态。
scrollToItem(QTreeWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible)滚动视图以确保指定项可见。
setItemHidden(QTreeWidgetItem *item, bool hide) 设置指定项的隐藏状态。
isItemHidden(QTreeWidgetItem *item) 检查指定项是否隐藏。
setItemDisabled(QTreeWidgetItem *item, bool disable) 设置指定项的禁用状态。
isItemDisabled(QTreeWidgetItem *item) 检查指定项是否禁用。
setItemSelected(QTreeWidgetItem *item, bool select) 设置指定项的选择状态。
isItemSelected(QTreeWidgetItem *item) 检查指定项是否被选择。
itemAt(const QPoint &p) 返回在指定位置的项。
indexOfTopLevelItem(QTreeWidgetItem *item) 获取指定顶级项的索引。
clearSelection() 清除所有选定的项。
sortItems(int column, Qt::SortOrder order = Qt::AscendingOrder)根据指定列的数据对项进行排序。
headerItem() 获取树的标题项。
setHeaderItem(QTreeWidgetItem *item) 设置树的标题项。
header() 获取树的标题。
setHeaderLabel(const QString &label) 设置树的标题。
headerItem() 获取树的标题项。
setHeaderItem(QTreeWidgetItem *item) 设置树的标题项。
header() 获取树的标题。
setHeaderLabel(const QString &label) 设置树的标题。
setSortingEnabled(bool enable) 启用或禁用树的排序功能。
isSortingEnabled() 检查树的排序功能是否启用。
sortColumn() 获取当前排序的列。
sortOrder() 获取当前排序的顺序。
sortByColumn(int column, Qt::SortOrder order) 根据指定列的数据对项进行排序。
currentChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)当前项发生变化时发出的信号,连接到槽函数以执行相应的操作。
itemClicked(QTreeWidgetItem *item, int column) 项被点击时发出的信号,连接到槽函数以执行相应的操作。
itemDoubleClicked(QTreeWidgetItem *item, int column) 项被双击时发出的信号,连接到槽函数以执行相应的操作。
itemPressed(QTreeWidgetItem *item, int column) 项被按下时发出的信号,连接到槽函数以执行相应的操作。
itemActivated(QTreeWidgetItem *item, int column) 项被激活时发出的信号,连接到槽函数以执行相应的操作。
itemCollapsed(QTreeWidgetItem *item) 项被折叠时发出的信号,连接到槽函数以执行相应的操作。
itemExpanded(QTreeWidgetItem *item) 项被展开时发出的信号,连接到槽函数以执行相应的操作。
itemChanged(QTreeWidgetItem *item, int column) 项的数据发生变化时发出的信号,连接到槽函数以执行相应的操作。
itemSelectionChanged() 选定项发生变化时发出的信号,连接到槽函数以执行相应的操作。
22.标准Dialog对话框组件
QInputDialog 类
getText(QWidget *parent, const QString &title, const QString &label, QLineEdit::EchoMode mode = QLineEdit::Normal,
const QString &text = QString(), bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) -> QString
显示一个文本输入对话框,返回用户输入的文本。
getInt(QWidget *parent, const QString &title, const QString &label, int value = 0, int minValue = -2147483647,
int maxValue = 2147483647, int step = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) -> int
显示一个整数输入对话框,返回用户输入的整数。
getDouble(QWidget *parent, const QString &title, const QString &label, double value = 0, double minValue = -2147483647,
double maxValue = 2147483647, int decimals = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) -> double
显示一个浮点数输入对话框,返回用户输入的浮点数。
getItem(QWidget *parent, const QString &title, const QString &label, const QStringList &items,
int current = 0, bool editable = true, bool *ok = nullptr,
Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone) -> QString
显示一个列表输入对话框,返回用户选择的项。
getMultiLineText(QWidget *parent, const QString &title, const QString &label,
const QString &text = QString(), bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) -> QString
显示一个多行文本输入对话框,返回用户输入的文本。
getText方法实现,QInputDialog::getText 是 Qt 中用于显示一个简单的对话框,其中包含一个用于输入文本的字段的静态方法。这个方法通常用于获取用户输入的文本。
方法的参数包括:
parent: 对话框的父窗口。传入 nullptr 表示没有父窗口。
caption: 对话框的标题。
label: 输入字段上方的文本标签。
echo: 输入文本时的回显模式,可以是 QLineEdit::Normal、QLineEdit::NoEcho 等。
text: 初始文本。
ok: 一个布尔指针,用于获取对话框的 OK 按钮的状态。
flags: 可选的窗口标志。
void MainWindow::on_pushButton_text_clicked()
{
QString dlgTitle="输入文字对话框";
QString txtLabel="请输入文件名";
QString defaultInput="新建文件.txt";
QLineEdit::EchoMode echoMode=QLineEdit::Normal; // 正常文字输入
// QLineEdit::EchoMode echoMode=QLineEdit::Password; // 密码输入
bool flag = false;
QString text = QInputDialog::getText(this, dlgTitle,txtLabel, echoMode,defaultInput, &flag);
if (flag && !text.isEmpty())
{
ui->plainTextEdit->appendPlainText(text);
}
}
通过getInt方法实现,QInputDialog::getInt 是 Qt 中用于显示一个简单的对话框,其中包含一个用于输入整数的字段的静态方法。
这个方法通常用于获取用户输入的整数。
方法的参数包括:
parent: 对话框的父窗口。传入 nullptr 表示没有父窗口。
caption: 对话框的标题。
label: 输入字段上方的文本标签。
value: 初始值。
min: 最小值。
max: 最大值。
step: 步长,表示每次增减的量。
ok: 一个布尔指针,用于获取对话框的 OK 按钮的状态。
flags: 可选的窗口标志。
方法返回用户输入的整数,如果用户取消了对话框,则返回 0。你可以根据需要调整标签、初始值、范围、步长等参数,以满足你的具体需求。
该方法提供了一个SpinBox选择框,在输入时可以通过传入minValue限制最小值,maxValue限制最大值,通过stepValue设置每次步长,代码如下;
void MainWindow::on_pushButton_int_clicked()
{
QString dlgTitle="输入整数对话框";
QString txtLabel="设置字体大小";
int defaultValue=ui->plainTextEdit->font().pointSize(); // 现有字体大小
int minValue=6, maxValue=50, stepValue=1; // 范围(步长)
bool flag=false;
int inputValue = QInputDialog::getInt(this, dlgTitle,txtLabel,defaultValue, minValue,maxValue,stepValue,&flag);
if (flag)
{
QFont font=ui->plainTextEdit->font();//设置字体大小
font.setPointSize(inputValue);
ui->plainTextEdit->setFont(font);
// 显示在编辑框内
QString stringValue = QString::number(inputValue);
ui->plainTextEdit->appendPlainText(stringValue);
}
}
通过getDouble方法实现,QInputDialog::getDouble 是 Qt 中用于显示一个简单的对话框,其中包含一个用于输入浮点数的字段的静态方法。
这个方法通常用于获取用户输入的浮点数。
方法的参数包括:
parent: 对话框的父窗口。传入 nullptr 表示没有父窗口。
caption: 对话框的标题。
label: 输入字段上方的文本标签。
value: 初始值。
min: 最小值。
max: 最大值。
decimals: 小数位数。
ok: 一个布尔指针,用于获取对话框的 OK 按钮的状态。
flags: 可选的窗口标志。
方法返回用户输入的浮点数,如果用户取消了对话框,则返回 0.0。你可以根据需要调整标签、初始值、范围、小数位数等参数,以满足你的具体需求。
该方法提供了一个SpinBox选择框,浮点数的输入同样可以限制输入长度,同时浮点数也可以指定小数点的位数,通过decimals指定为两位显示,代码如下;
void MainWindow::on_pushButton_float_clicked()
{
QString dlgTitle="输入浮点数对话框";
QString txtLabel="输入一个浮点数";
float defaultValue=3.13;
float minValue=0, maxValue=10000; // 范围
int decimals=2; // 小数点位数
bool flag=false;
float inputValue = QInputDialog::getDouble(this, dlgTitle,txtLabel,defaultValue, minValue,maxValue,decimals,&flag);
if (flag)
{
QString str=QString::asprintf("输入了一个浮点数:%.2f",inputValue);
ui->plainTextEdit->appendPlainText(str);
}
}
1.1.4 单选框输入
通过getItem方法实现,该方法适合于只让用户选择特定的内容,QInputDialog::getItem 是 Qt 中用于显示一个简单的对话框,其中包含一个下拉框(QComboBox)供用户选择的静态方法。这个方法通常用于获取用户从列表中选择的项。
方法的参数包括:
parent: 对话框的父窗口。传入 nullptr 表示没有父窗口。
caption: 对话框的标题。
label: 下拉框上方的文本标签。
items: 字符串列表,表示下拉框中的选项。
currentItem: 初始时被选中的项的索引。
editable: 是否允许用户编辑下拉框中的文本。
ok: 一个布尔指针,用于获取对话框的 OK 按钮的状态。在这个例子中,我们传递了 nullptr,因为我们不关心 OK 按钮的状态。
flags: 可选的窗口标志。
方法返回用户选择的项,如果用户取消了对话框,则返回一个空字符串。你可以根据需要调整标签、初始选中项、是否可编辑等参数,以满足你的具体需求。代码如下所示;
void MainWindow::on_pushButton_checkbox_clicked()
{
QStringList items; // 列表内容
items <<"优秀"<<"良好"<<"合格"<<"不合格"; // 放入列表
QString dlgTitle="条目选择对话框";
QString txtLabel="请选择级别";
int curIndex=0; // 初始选择项
bool editable=false; // 是否可编辑
bool flag=false;
QString text = QInputDialog::getItem(this, dlgTitle,txtLabel,items,curIndex,editable,&flag);
if (flag && !text.isEmpty())
{
ui->plainTextEdit->appendPlainText(text);
}
}
QFileDialog 类
getOpenFileName(QWidget *parent = nullptr, const QString &caption = QString(),
const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, Options options = 0)
打开文件对话框,获取用户选择的文件名。
getOpenFileNames(QWidget *parent = nullptr, const QString &caption = QString(),
const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, Options options = 0)
打开文件对话框,获取用户选择的多个文件名。
getSaveFileName(QWidget *parent = nullptr, const QString &caption = QString(),
const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, Options options = 0)
保存文件对话框,获取用户输入的文件名。
getExistingDirectory(QWidget *parent = nullptr, const QString &caption = QString(),
const QString &dir = QString(), Options options = ShowDirsOnlyDontResolveSymlinks)
用于在文件系统中获取现有目录的路径。
getExistingDirectoryUrl(QWidget *parent = nullptr, const QString &caption = QString(),
const QUrl &dir = QUrl(), QFileDialog::Options options = ShowDirsOnlyDontResolveSymlinks)
用于在文件系统中获取现有目录的路径。
getSaveFileUrl(QWidget *parent = nullptr, const QString &caption = QString(),
const QUrl &dir = QUrl(), const QString &filter = QString(), QString *selectedFilter = nullptr, Options options = 0)
保存文件对话框,获取用户输入的文件的 URL。
getOpenFileUrl(QWidget *parent = nullptr, const QString &caption = QString(),
const QUrl &dir = QUrl(), const QString &filter = QString(), QString *selectedFilter = nullptr, Options options = 0)
打开文件对话框,获取用户选择的文件的 URL。
getOpenFileUrls(QWidget *parent = nullptr, const QString &caption = QString(),
const QUrl &dir = QUrl(), const QString &filter = QString(), QString *selectedFilter = nullptr, Options options = 0)
打开文件对话框,获取用户选择的多个文件的 URL。
getSaveFileUrls(QWidget *parent = nullptr, const QString &caption = QString(),
const QUrl &dir = QUrl(), const QString &filter = QString(), QString *selectedFilter = nullptr, Options options = 0)
保存文件对话框,获取用户输入的多个文件的 URL。
setLabelText(QFileDialog::DialogLabel label, const QString &text)设置对话框中指定标签的文本。
setLabelText(QFileDialog::DialogLabel label, const QUrl &url)设置对话框中指定标签的文本为 URL。
setOption(QFileDialog::Option option, bool on = true) 启用或禁用对话框的指定选项。
setOptions(QFileDialog::Options options) 设置对话框的选项。
setFileMode(QFileDialog::FileMode mode) 设置对话框的文件模式(打开、保存、目录选择等)。
setAcceptMode(QFileDialog::AcceptMode mode) 设置对话框的接受模式,是打开文件还是保存文件。
setViewMode(QFileDialog::ViewMode mode) 设置对话框的视图模式,如详细视图、图标视图等。
setDirectory(const QString &directory) 设置对话框打开时的默认目录。
setDirectoryUrl(const QUrl &directory) 设置对话框打开时的默认目录的 URL。
setFilter(const QString &filter) 设置对话框的文件类型过滤器,如"文本文件 (.txt);;所有文件 ()"。
setNameFilter(const QString &filter) 设置对话框的文件名过滤器,如"*.txt"。
setDefaultSuffix(const QString &suffix) 设置默认的文件后缀,用于在用户未指定文件后缀时追加到文件名。
setMimeTypeFilters(const QStringList &filters) 设置对话框的 MIME 类型过滤器。
setSidebarUrls(const QList<QUrl> &urls) 设置对话框侧边栏的 URL 列表。
setProxyModel(QAbstractProxyModel *proxyModel) 设置对话框使用的代理模型。
setHistory(const QStringList &paths) 设置对话框历史记录的路径列表。
setSidebarUrls(const QList<QUrl> &urls) 设置对话框侧边栏的 URL 列表。
setProxyModel(QAbstractProxyModel *proxyModel) 设置对话框使用的代理模型。
setHistory(const QStringList &paths) 设置对话框历史记录的路径列表。
setDefaultSuffix(const QString &suffix) 设置默认的文件后缀,用于在用户未指定文件后缀时追加到文件名。
setMimeTypeFilters(const QStringList &filters) 设置对话框的 MIME 类型过滤器。
setSidebarUrls(const QList<QUrl> &urls) 设置对话框侧边栏的 URL 列表。
setProxyModel(QAbstractProxyModel *proxyModel) 设置对话框使用的代理模型。
setHistory(const QStringList &paths) 设置对话框历史记录的路径列表。
setDefaultSuffix(const QString &suffix) 设置默认的文件后缀,用于在用户未指定文件后缀时追加到文件名。
setMimeTypeFilters(const QStringList &filters) 设置对话框的 MIME 类型过滤器。
setSidebarUrls(const QList<QUrl> &urls) 设置对话框侧边栏的 URL 列表。
setProxyModel(QAbstractProxyModel *proxyModel) 设置对话框使用的代理模型。
setHistory(const QStringList &paths) 设置对话框历史记录的路径列表。
setDefaultSuffix(const QString &suffix) 设置默认的文件后缀,用于在用户未指定文件后缀时追加到文件名。
setMimeTypeFilters(const QStringList &filters) 设置对话框的 MIME 类型过滤器。
setSidebarUrls(const QList<QUrl> &urls) 设置对话框侧边栏的 URL 列表。
setProxyModel(QAbstractProxyModel *proxyModel) 设置对话框使用的代理模型。
setHistory(const QStringList &paths) 设置对话框历史记录的路径列表。
setDefaultSuffix(const QString &suffix) 设置默认的文件后缀,用于在用户未指定文件后缀时追加到文件名。
setMimeTypeFilters(const QStringList &filters) 设置对话框的 MIME 类型过滤器。
setSidebarUrls(const QList<QUrl> &urls) 设置对话框侧边栏的 URL 列表。
setProxyModel(QAbstractProxyModel *proxyModel) 设置对话框使用的代理模型。
setHistory(const QStringList &paths) 设置对话框历史记录的路径列表。
setLabelText(QFileDialog::DialogLabel label, const QString &text)设置对话框中指定标签的文本。
setLabelText(QFileDialog::DialogLabel label, const QUrl &url)设置对话框中指定标签的文本为 URL。
setOption(QFileDialog::Option option, bool on = true) 启用或禁用对话框的指定选项。
setOptions(QFileDialog::Options options) 设置对话框的选项。
setFileMode(QFileDialog::FileMode mode) 设置对话框的文件模式(打开、保存、目录选择等)。
setAcceptMode(QFileDialog::AcceptMode mode) 设置对话框的接受模式,是打开文件还是保存文件。
setViewMode(QFileDialog::ViewMode mode) 设置对话框的视图模式,如详细视图、图标视图等。
setDirectory(const QString &directory) 设置对话框打开时的默认目录。
setDirectoryUrl(const QUrl &directory) 设置对话框打开时的默认目录的 URL。
setFilter(const QString &filter) 设置对话框的文件类型过滤器,如"文本文件 (.txt);;所有文件 ()"。
setNameFilter(const QString &filter) 设置对话框的文件名过滤器,如"*.txt"。
setDefaultSuffix(const QString &suffix) 设置默认的文件后缀,用于在用户未指定文件后缀时追加到文件名。
setMimeTypeFilters(const QStringList &filters) 设置对话框的 MIME 类型过滤器。
setSidebarUrls(const QList<QUrl> &urls) 设置对话框侧边栏的 URL 列表。
setProxyModel(QAbstractProxyModel *proxyModel) 设置对话框使用的代理模型。
setHistory(const QStringList &paths) 设置对话框历史记录的路径列表。
2.1.1 选择文件
在选择单个文件时可以通过调用getOpenFileName方法实现,QFileDialog::getOpenFileName 是
Qt 中用于显示打开文件对话框并获取用户选择的文件名的静态方法。它通常用于在用户需要选择一个文件进行打开操作时,例如加载文件等场景。
方法的参数包括:
parent: 对话框的父窗口。传入 nullptr 表示没有父窗口。
caption: 对话框的标题。
dir: 默认的目录路径。
filter: 文件类型过滤器,用于筛选可打开的文件类型。可以使用分号分隔多个过滤器,例如 "Text Files (*.txt);;All Files (*)"。
方法返回用户选择的文件名,如果用户取消了对话框,则返回一个空字符串。你可以根据需要调整过滤器、默认目录等参数,以满足你的具体需求。
通过最后一个参数来指定需要打开的文件类型,通常可传入一组字符串来实现过滤,当打开后可以通过aFileName拿到文件具体路径,代码如下;
void MainWindow::on_pushButton_file_clicked()
{
QString curPath=QDir::currentPath(); // 获取系统当前目录
// QString curPath=QCoreApplication::applicationDirPath(); // 获取应用程序的路径
QString dlgTitle="选择一个文件"; // 对话框标题
QString filter="文本文件(*.txt);;图片文件(*.jpg *.gif *.png);;所有文件(*.*)"; // 文件过滤器
QString aFileName=QFileDialog::getOpenFileName(this,dlgTitle,curPath,filter);
if (!aFileName.isEmpty())
{
ui->plainTextEdit->appendPlainText(aFileName);
}
}
同理,当我们需要选择多个文件并打开时只需要将QString修改为QStringList这样当文件被打开后则可以通过循环输出fileList列表来获取所有路径信息,
如下代码所示;
void MainWindow::on_pushButton_multiple_clicked()
{
// QString curPath=QCoreApplication::applicationDirPath(); // 获取应用程序的路径
QString curPath=QDir::currentPath(); // 获取系统当前目录
QString dlgTitle="选择多个文件"; // 对话框标题
QString filter="文本文件(*.txt);;图片文件(*.jpg *.gif *.png);;所有文件(*.*)"; // 文件过滤器
QStringList fileList=QFileDialog::getOpenFileNames(this,dlgTitle,curPath,filter);
for (int i=0; i<fileList.count();i++)
{
// 循环将文件路径添加到列表中
ui->plainTextEdit->appendPlainText(fileList.at(i));
}
}
2.1.2 选择目录
选择目录时可以调用getExistingDirectory方法,QFileDialog::getExistingDirectory 是 Qt 中用于显示选择目录对话框并获取用户选择的目录的静态方法。它通常用于在用户需要选择一个目录时,例如保存文件到特定目录或加载文件等场景。
方法的参数包括:
parent: 对话框的父窗口。传入 nullptr 表示没有父窗口。
caption: 对话框的标题。
dir: 默认的目录路径。
options: 对话框的选项。在示例中,使用了 QFileDialog::ShowDirsOnly 表示只显示目录,并且 QFileDialog::DontResolveSymlinks 表示不解析符号链接。
方法返回用户选择的目录路径,如果用户取消了对话框,则返回一个空字符串。你可以根据需要调整默认目录、选项等参数,以满足你的具体需求。
void MainWindow::on_pushButton_dirfile_clicked()
{
QString curPath=QCoreApplication::applicationDirPath(); // 获取应用程序的路径
// QString curPath=QDir::currentPath(); // 获取系统当前目录
// 调用打开文件对话框打开一个文件
QString dlgTitle="选择一个目录"; // 对话框标题
QString selectedDir=QFileDialog::getExistingDirectory(this,dlgTitle,curPath,QFileDialog::ShowDirsOnly);
if (!selectedDir.isEmpty())
{
ui->plainTextEdit->appendPlainText(selectedDir);
}
}
2.1.3 保存文件
保存文件可以通过调用getSaveFileName方法来实现,QFileDialog::getSaveFileName 是 Qt 中用于显示保存文件对话框并获取用户选择的文件名的静态方法。它通常用于在用户将文件保存到磁盘时获取文件的保存路径。
该方法的参数包括:
parent: 对话框的父窗口。传入 nullptr 表示没有父窗口。
caption: 对话框的标题。
dir: 默认的目录路径。
filter: 文件类型过滤器,用于筛选可保存的文件类型。可以使用分号分隔多个过滤器,例如 "Text Files (*.txt);;All Files (*)"。
方法返回用户选择的文件名,如果用户取消了对话框,则返回一个空字符串。你可以根据需要调整过滤器、默认目录等参数,以满足你的具体需求。
void MainWindow::on_pushButton_save_clicked()
{
QString curPath=QCoreApplication::applicationDirPath(); // 获取应用程序的路径
QString dlgTitle="保存文件"; // 对话框标题
QString filter="文本文件(*.txt);;h文件(*.h);;C++文件(.cpp);;所有文件(*.*)"; // 文件过滤器
QString aFileName=QFileDialog::getSaveFileName(this,dlgTitle,curPath,filter);
if (!aFileName.isEmpty())
{
ui->plainTextEdit->appendPlainText(aFileName);
}
}
23.Slider滑块条组件
QSlider(Qt::Orientation, QWidget *parent = nullptr)
构造函数,创建一个滑块控件。Qt::Orientation参数指定方向(Qt::Horizontal或Qt::Vertical)。
setMinimum(int min) 设置滑块的最小值。
setMaximum(int max) 设置滑块的最大值。
setSingleStep(int step) 设置用户通过鼠标或键盘按键时,滑块的单步大小。
setPageStep(int step) 设置用户通过点击滑块轨道时,滑块的页面步长。
setValue(int value) 设置滑块的当前值。
value() const 返回滑块的当前值。
setTickInterval(int ti) 设置刻度间隔,以便显示刻度标记。
setTickPosition(TickPosition position)设置刻度标记的位置(NoTicks、TicksAbove、TicksBelow、TicksBothSides)。
sliderPosition() const 返回滑块的位置,通常与value()相同,但可能在某些情况下不同(例如,未捕获的移动)。
setTracking(bool enable) 启用/禁用实时跟踪。如果启用,滑块在拖动时会实时更新值;禁用时,只有在释放鼠标时才更新。
setTickInterval(int ti) 设置刻度间隔,以便显示刻度标记。
setTickPosition(TickPosition position)设置刻度标记的位置(NoTicks、TicksAbove、TicksBelow、TicksBothSides)。
24.ComboBox下拉组合框组件
QComboBox(QWidget *parent = nullptr) 构造函数,创建一个组件对象。
addItem(const QString &text, const QVariant &userData = QVariant())向组件添加一个项,可以附带用户数据。
addItems(const QStringList &texts) 向组件添加多个项,使用字符串列表。
insertItem(int index, const QString &text, const QVariant &userData = QVariant()) 在指定索引处插入一个项。
insertItems(int index, const QStringList &texts) 在指定索引处插入多个项。
removeItem(int index) 移除指定索引处的项。
clear() 清除组件中的所有项。
setCurrentIndex(int index) 设置组件当前选择的项的索引。
currentText() 返回当前组件中显示的文本。
currentIndex() 返回当前组件中选择的项的索引。
count() 返回组件中项的总数。
itemText(int index) 返回指定索引处项的文本。
itemData(int index, int role = Qt::UserRole) 返回指定索引处项的用户数据。
setItemText(int index, const QString &text) 设置指定索引处项的文本。
setItemData(int index, const QVariant &value, int role = Qt::UserRole) 为指定索引处项设置额外的数据。
clearEditText() 清除组件的编辑文本。
setEditable(bool editable) 设置组件是否可编辑。如果可编辑,用户可以手动输入文本。
setMaxCount(int max) 设置组件中显示的最大项数。如果超过该数目,将出现垂直滚动条。
setMinimumContentsLength(int characters) 设置组件的最小内容长度,以便显示完整的项。
setModel(QAbstractItemModel *model) 设置组件的数据模型。通过模型,可以更灵活地管理组件中的项。
view() 返回组件的视图,允许对视图进行定制。
clear() 清除组件中的所有项。
showPopup() 打开组件的下拉列表。
hidePopup() 隐藏组件的下拉列表。
activated(int index) 信号,当用户选择组件中的项时发出。
currentIndexChanged(int index) 信号,当组件中的当前项发生变化时发出。
25.ProgressBar进度条组件
QProgressBar(QWidget *parent = nullptr) 构造函数,创建一个组件对象。
setRange(int minimum, int maximum) 设置组件的范围,即任务的最小和最大值。
setValue(int value) 设置组件的当前值,即任务已完成的进度。
value() const 获取组件的当前值。
setMinimum(int minimum) 设置组件的最小值。
setMaximum(int maximum) 设置组件的最大值。
reset() 重置组件,将当前值设置为最小值。
minimum() const 获取组件的最小值。
maximum() const 获取组件的最大值。
text() const 获取组件显示的文本,通常是百分比值。
setFormat(const QString &format) 设置组件显示文本的格式,支持百分比等。
setAlignment(Qt::Alignment alignment) 设置组件文本的对齐方式。
setInvertedAppearance(bool invert) 设置组件是否显示为反向进度(从右到左)。
setOrientation(Qt::Orientation orientation) 设置组件的方向,可以是水平或垂直。
setStyleSheet(const QString &styleSheet) 设置组件的样式表。
setFormat(const QString &format) 设置组件的显示格式。
setAlignment(Qt::Alignment alignment) 设置组件文本的对齐方式。
QChart 类
setTitle(const QString &title) 设置图表的标题
setTitleFont(const QFont &font) 设置图表标题的字体
setTitleBrush(const QBrush &brush) 设置图表标题的画刷(颜色和填充)
setTheme(QChart::ChartTheme theme) 设置图表的主题,包括颜色和样式
addSeries(QAbstractSeries *series) 向图表中添加数据系列
removeSeries(QAbstractSeries *series) 从图表中移除指定的数据系列
createDefaultAxes() 创建默认的坐标轴
setAxisX(QAbstractAxis *axis, QAbstractSeries *series = nullptr)设置图表的 X 轴。如果未指定系列,则应用于所有系列
setAxisY(QAbstractAxis *axis, QAbstractSeries *series = nullptr)设置图表的 Y 轴。如果未指定系列,则应用于所有系列
legend() 返回图表的图例对象
setAnimationOptions(QChart::AnimationOptions options)设置图表的动画选项
createDefaultGraphicsView() 创建默认的图形视图(QGraphicsView),用于显示图表
addAxis(QAbstractAxis *axis, Qt::Alignment alignment)将指定的坐标轴添加到图表中,并指定对齐方式
removeAxis(QAbstractAxis *axis) 从图表中移除指定的坐标轴
axisX(QAbstractSeries *series = nullptr) 返回图表的 X 轴。如果未指定系列,则返回第一个 X 轴
axisY(QAbstractSeries *series = nullptr) 返回图表的 Y 轴。如果未指定系列,则返回第一个 Y 轴
setPlotAreaBackgroundBrush(const QBrush &brush) 设置图表绘图区域的背景画刷
setPlotAreaBackgroundVisible(bool visible) 设置图表绘图区域的背景是否可见
setBackgroundBrush(const QBrush &brush) 设置整个图表的背景画刷
setBackgroundRoundness(qreal diameter) 设置图表背景的圆角直径
setMargins(const QMargins &margins) 设置图表的外边距
setTheme(QChart::ChartTheme theme) 设置图表的主题
QGraphicsView
QGraphicsView(QWidget *parent = nullptr) 默认构造函数,创建一个QGraphicsView对象。
setScene(QGraphicsScene *scene) 将指定的QGraphicsScene设置为视图的场景。
scene() const 获取当前视图关联的场景。
setRenderHint(QPainter::RenderHint hint, bool on = true)设置渲染提示,例如抗锯齿等。
setRenderHints(QPainter::RenderHints hints) 设置多个渲染提示。
renderHints() const 获取当前的渲染提示。
setViewportUpdateMode(ViewportUpdateMode mode) 设置视口更新模式,决定何时重绘视口。
setSceneRect(const QRectF &rect) 设置场景矩形,指定在视图中可见的场景区域。
setSceneRect(qreal x, qreal y, qreal w, qreal h) 设置场景矩形,指定在视图中可见的场景区域。
sceneRect() const 获取当前场景矩形。
setTransform(const QTransform &matrix, bool combine = false)设置视图的坐标变换矩阵。
resetTransform() 重置视图的坐标变换矩阵为单位矩阵。
translate(qreal dx, qreal dy) 将视图进行平移。
rotate(qreal angle) 将视图进行旋转。
scale(qreal sx, qreal sy) 将视图进行缩放。
resetMatrix() 将视图的坐标变换矩阵重置为单位矩阵。
setViewportMargins(int left, int top, int right, int bottom)设置视口的边缘,以保留用于显示视图的场景区域之外的空间。
setBackgroundBrush(const QBrush &brush) 设置视图的背景刷。
viewport() const 获取视口窗口部件,即视图的直接子部件。
setOptimizationFlag(OptimizationFlag flag, bool enabled = true)启用或禁用指定的优化标志,以提高性能。
optimizationFlag(OptimizationFlag flag) const 获取指定的优化标志状态。
centerOn(const QGraphicsItem *item) 将视图中心对准指定的图形项。
centerOn(const QPointF &pos) 将视图中心对准指定的场景坐标。
setInteractive(bool allowed) 启用或禁用与场景中的项的交互。
setDragMode(DragMode mode) 设置拖动模式,用于选择或移动项。
setViewportMargins(int left, int top, int right, int bottom)设置视口的边缘,以保留用于显示视图的场景区域之外的空间。
viewport() const 获取视口窗口部件,即视图的直接子部件。
26.Charts绘制各类图表详解
QBarSet类
QBarSet(const QString &label = QString()) 构造函数,创建一个空的 QBarSet 对象,可以通过提供标签进行初始化。
void append(qreal value) 将一个值添加到数据集的末尾。
void append(const QList<qreal> &values) 将一组值添加到数据集的末尾。
void replace(int index, qreal value) 替换数据集中指定索引位置的值。
void replace(const QList<qreal> &values) 用提供的一组值替换整个数据集。
void clear() 清除数据集中的所有值。
int count() const 返回数据集中值的数量。
bool isEmpty() const 检查数据集是否为空。
QString label() const 返回数据集的标签。
void setLabel(const QString &label) 设置数据集的标签。
qreal at(int index) const 返回数据集中指定索引位置的值。
QList<qreal> values() const 返回包含数据集所有值的列表。
QBarSeries 类
QBarSeries(QObject *parent = nullptr) 构造函数,创建一个空的 QBarSeries 对象。
void append(QBarSet *set) 将一个 QBarSet 对象添加到系列的末尾。
void append(const QList<QBarSet*> &sets) 将一组 QBarSet 对象添加到系列的末尾。
void replace(int index, QBarSet *set) 替换系列中指定索引位置的 QBarSet 对象。
void replace(const QList<QBarSet*> &sets) 用提供的一组 QBarSet 对象替换整个系列。
void remove(int index) 移除系列中指定索引位置的 QBarSet 对象。
void clear() 清除系列中的所有 QBarSet 对象。
int count() const 返回系列中 QBarSet 对象的数量。
bool isEmpty() const 检查系列是否为空。
QBarSet* at(int index) const 返回系列中指定索引位置的 QBarSet 对象。
QList<QBarSet*> barSets() const 返回包含系列所有 QBarSet 对象的列表。
QBarCategoryAxis 类
QBarCategoryAxis(QObject *parent = nullptr) 构造函数,创建一个空的 QBarCategoryAxis 对象。
void append(const QStringList &categories) 将一组类别添加到轴的末尾。
void append(const QString &category) 将一个类别添加到轴的末尾。
void insert(int index, const QString &category) 在指定索引位置插入一个类别。
void insert(int index, const QStringList &categories)在指定索引位置插入一组类别。
void remove(const QString &category) 移除指定的类别。
void remove(int index, int count = 1) 从指定索引位置开始移除指定数量的类别。
void clear() 清除轴中的所有类别。
int count() const 返回轴中类别的数量。
QString categoryAt(int index) const 返回轴中指定索引位置的类别。
QStringList categories() const 返回包含轴所有类别的列表。
void setCategories(const QStringList &categories) 设置轴的类别。
void setStartValue(qreal value) 设置轴的起始值。
qreal startValue() const 返回轴的起始值。
void setRange(qreal min, qreal max) 设置轴的范围。
void append(const QVector<QPointF> &points) 将一组点添加到轴的末尾,用于自动设置类别。
void replace(const QVector<QPointF> &points) 用提供的一组点替换整个轴,用于自动设置类别。
QPieSeries 类(饼状图)
QPieSeries 是 Qt Charts 模块中用于绘制饼状图的数据序列类。它派生自 QAbstractSeries 类,用于管理和展示饼状图中的数据。
QPieSeries(QObject *parent = nullptr) 构造函数,创建一个 QPieSeries 对象。
~QPieSeries() 析构函数,释放 QPieSeries 对象。
append(QPieSlice *slice) 向饼状图序列中追加一个饼块。
insert(int index, QPieSlice *slice) 在指定位置插入一个饼块。
remove(QPieSlice *slice) 从饼状图序列中移除指定的饼块。
clear() 清除饼状图序列中的所有饼块。
slices() 返回饼状图序列中的所有饼块。
count() 返回饼状图序列中的饼块数量。
at(int index) 返回饼状图序列中指定索引位置的饼块。
setVisible(bool visible) 设置饼状图序列的可见性。
isVisible() 返回饼状图序列的可见性。
setHoleSize(double size) 设置饼状图中间空心的大小,范围为 [0.0, 1.0],0.0 表示没有空心,1.0 表示整个饼状图都是空心。
holeSize() 返回饼状图中间空心的大小。
setPieSize(double size) 设置饼状图的大小,范围为 [0.0, 1.0],默认为 1.0。
pieSize() 返回饼状图的大小。
setLabelsVisible(bool visible) 设置饼块的标签是否可见。
labelsVisible() 返回饼块的标签是否可见。
setLabelsPosition(QPieSlice::LabelPosition position)设置饼块标签的位置。
labelsPosition() 返回饼块标签的位置。
setLabelsPrecision(int precision) 设置饼块标签显示的小数位数。
labelsPrecision() 返回饼块标签显示的小数位数。
clicked(QPieSlice *slice) 点击饼块时发出的信号,参数为被点击的饼块。
hovered(QPieSlice *slice, bool state) 鼠标悬停在饼块上时发出的信号,参数为被悬停的饼块和悬停状态。
pressed(QPieSlice *slice) 鼠标按下饼块时发出的信号,参数为被按下的饼块。
released(QPieSlice *slice) 鼠标释放饼块时发出的信号,参数为被释放的饼块。
QPieSlice 类
QPieSlice 是 Qt Charts 模块中用于表示饼状图中的单个饼块的类。每个 QPieSlice 对象都代表饼状图中的一个数据分块。
以下是关于 QPieSlice 的一些方法以及说明:
QPieSlice(qreal value, QString label) 构造函数,创建一个带有给定值和标签的 QPieSlice 对象。
~QPieSlice() 析构函数,释放 QPieSlice 对象。
setLabel(QString label) 设置饼块的标签文字。
label() 返回饼块的标签文字。
setValue(qreal value) 设置饼块的值。
value() 返回饼块的值。
setExploded(bool exploded) 设置饼块是否为爆炸状态,即是否与饼图分离。
isExploded() 返回饼块是否为爆炸状态。
setPieSeries(QPieSeries *series) 设置饼块所属的 QPieSeries 对象。
pieSeries() 返回饼块所属的 QPieSeries 对象。
setBrush(const QBrush &brush) 设置饼块的画刷,即填充颜色。
brush() 返回饼块的画刷。
setLabelBrush(const QBrush &brush) 设置饼块标签的画刷,即标签的颜色。
labelBrush() 返回饼块标签的画刷。
setPen(const QPen &pen) 设置饼块的画笔,即边框颜色和样式。
pen() 返回饼块的画笔。
setLabelVisible(bool visible) 设置饼块标签是否可见。
isLabelVisible() 返回饼块标签是否可见。
setExplodeDistanceFactor(qreal factor) 设置饼块爆炸时的距离因子,即与饼图分离的距离。
explodeDistanceFactor() 返回饼块爆炸时的距离因子。
setPercentage(qreal percentage) 设置饼块的百分比值。
percentage() 返回饼块的百分比值。
clicked(bool state) 鼠标点击饼块时发出的信号,参数为鼠标点击的状态(按下或释放)。
hovered(bool state) 鼠标悬停在饼块上时发出的信号,参数为悬停状态。
pressed() 鼠标按下饼块时发出的信号。
released() 鼠标释放饼块时发出的信号。
QStackedBarSeries
堆叠图的创建需要用到QStackedBarSeries和QBarCategoryAxis类,QStackedBarSeries 是 Qt Charts 模块中用于创建堆叠柱状图的类。堆叠柱状图显示多个柱状系列的堆叠效果,每个柱状系列由一个或多个柱状条组成,这些柱状条按照数据堆叠在一起,形成整体的柱状图。
以下是 QStackedBarSeries 的一些重要方法和属性:
QStackedBarSeries(QObject *parent = nullptr) 构造函数,创建一个 QStackedBarSeries 对象。
void append(QBarSet *set)将一个 QBarSet 添加到序列中。
void append(QList<QBarSet *> sets) 将一组 QBarSet 添加到序列中。
QList<QBarSet *> barSets() const 返回序列中的所有 QBarSet。
void setLabelsVisible(bool visible) 设置是否显示柱状图的标签。
bool labelsVisible() const 返回柱状图的标签可见性。
void setLabelsFormat(const QString &format) 设置标签的显示格式。
QString labelsFormat() const 返回标签的显示格式。
void setLabelsPosition(QAbstractBarSeries::LabelsPosition position)设置标签的位置。
QAbstractBarSeries::LabelsPosition labelsPosition() const返回标签的位置。
QPercentBarSeries类
百分比图
百分比图(Percentage Chart)用于显示各部分占整体的百分比关系的图表。这种图表通过以百分比形式展示每个部分在总体中所占比例,提供了一种直观的方式来比较不同部分的相对大小。
百分比图有多种形式,其中一些常见的类型包括:
百分比柱状图(Percentage Bar Chart):类似于常规柱状图,但每个柱的高度表示相对于整体的百分比。
百分比堆叠柱状图(Percentage Stacked Bar Chart):将柱叠加在一起,每个部分的高度表示相对于总体的百分比。
百分比饼状图(Percentage Pie Chart):类似于饼状图,但每个扇形的角度或面积表示相对于整体的百分比。
百分比面积图(Percentage Area Chart):面积图的每个区域表示相对于整体的百分比。
百分比堆叠面积图(Percentage Stacked Area Chart):将面积叠加在一起,每个区域的面积表示相对于总体的百分比。
这些图表形式在不同情境下用于展示数据的占比关系,特别适用于需要强调相对比例的场景。百分比图通常能够帮助观众更容易地理解各部分在整体中的贡献,是一种有力的数据可视化工具。
使用百分比图时,注意确保数据的总和为100%。百分比图在市场份额分析、调查结果的占比展示、资源分配比例等方面得到广泛应用。
QPercentBarSeries 是 Qt Charts 模块中用于绘制百分比柱状图的类。它派生自 QAbstractBarSeries 类,表示一个二维坐标系中的数据系列,其中的数据以百分比柱状图的形式呈现。
以下是关于 QPercentBarSeries 的一些方法以及说明:
QPercentBarSeries() 构造函数,创建一个 QPercentBarSeries 对象。
~QPercentBarSeries() 析构函数,释放 QPercentBarSeries 对象。
setLabelsVisible(bool) 设置百分比柱状图上的数据标签是否可见。
labelsVisible() 返回百分比柱状图上的数据标签是否可见的状态。
setLabelsPosition(Position) 设置百分比柱状图上的数据标签位置,Position 是一个枚举类型,表示标签的位置,如上方、下方、内部等。
labelsPosition() 返回百分比柱状图上的数据标签位置。
setLabelsFormat(QString) 设置百分比柱状图上的数据标签的格式,使用字符串指定标签的显示格式。
labelsFormat() 返回百分比柱状图上的数据标签的显示格式。
setPercentageVisible(bool) 设置百分比柱状图上的百分比标签是否可见。
percentageVisible() 返回百分比柱状图上的百分比标签是否可见的状态。
setStackingGap(qreal) 设置百分比柱状图中堆叠的百分比柱之间的间隙。
stackingGap() 返回百分比柱状图中堆叠的百分比柱之间的间隙。
append(QBarSet*) 在百分比柱状图中追加一个数据集。
insert(int, QBarSet*) 在百分比柱状图中插入一个数据集,参数为位置索引和 QBarSet 对象。
remove(QBarSet*) 从百分比柱状图中移除指定的数据集。
take(int) 从百分比柱状图中移除并返回指定位置的数据集。
take(QBarSet*) 从百分比柱状图中移除指定的数据集并返回。
count() 返回百分比柱状图中数据集的数量。
barSets() 返回百分比柱状图中所有数据集的列表。
barWidth() 返回百分比柱状图中百分比柱的宽度。
barWidthChanged(qreal) 当百分比柱状图中百分比柱的宽度发生变化时发出的信号,参数为新的宽度值。
QPercentBarSeries 类主要用于在图表中绘制百分比柱状图,其中的数据集可以包含多个柱子,每个柱子表示一个百分比。
QSplineSeries 类
散点图(Scatter Plot)是一种二维图表,用于显示两个变量之间的关系。散点图的每个数据点由两个数值组成,分别对应于图表的横轴和纵轴。通过在图表中绘制这些点,可以观察和分析变量之间的关联性、趋势、聚集程度等。
散点图的特点包括:
数据点表示:每个数据点在图表上表示为一个独立的点,其中横轴对应一个变量,纵轴对应另一个变量。
关系展示:散点图主要用于展示两个变量之间的关系,例如相关性、分布情况、趋势等。
离散数据:适用于离散型数据,每个点表示一个具体的观测值。
聚类发现:通过观察数据点的分布,可以发现数据是否呈现出某种聚类模式。
异常值检测:可以用于检测异常值,即图表中偏离正常分布的离群点。
散点图的应用场景非常广泛,常见的用途包括:
相关性分析:通过观察散点图,可以初步了解两个变量之间的相关性,是进行相关性分析的一种可视化手段。
趋势分析:散点图可以用于观察两个变量之间是否存在趋势,是进行趋势分析的有力工具。
异常值检测:通过识别离群点,可以发现数据中的异常值,有助于数据清理和分析的准确性。
聚类分析:观察数据点的分布,可以发现是否存在某种聚类模式,对于数据的分组有一定帮助。
总体而言,散点图是一种简单而强大的工具,可用于初步探索和理解两个变量之间的关系。
QSplineSeries 是 Qt Charts 模块中用于绘制光滑曲线的类。它表示图表中的一条曲线,通过一系列的数据点来定义曲线的形状。
以下是关于 QSplineSeries 的一些方法以及说明:
QSplineSeries(QObject *parent = nullptr) 构造函数,创建一个 QSplineSeries 对象。
~QSplineSeries() 析构函数,释放 QSplineSeries 对象。
append(QPointF point) 向曲线中追加一个数据点。
append(QList<QPointF> points) 向曲线中追加一组数据点。
replace(int index, QPointF point) 替换指定索引处的数据点。
replace(QList<QPointF> points) 替换曲线中的所有数据点。
remove(int index) 移除指定索引处的数据点。
remove(int index, int count) 移除从指定索引开始的指定数量的数据点。
clear() 清空曲线中的所有数据点。
pointsVector() 返回曲线的数据点。
setUseOpenGL(bool enable) 设置是否使用 OpenGL 进行绘制。
useOpenGL() 返回是否使用 OpenGL 进行绘制。
setPen(const QPen &pen) 设置曲线的画笔,即曲线的颜色和样式。
pen() 返回曲线的画笔。
setBrush(const QBrush &brush) 设置曲线的画刷,即填充颜色。
brush() 返回曲线的画刷。
setPointLabelsVisible(bool visible) 设置是否显示数据点的标签。
isPointLabelsVisible() 返回数据点的标签是否可见。
setPointLabelsFormat(const QString &format) 设置数据点标签的显示格式,支持使用占位符。
pointLabelsFormat() 返回数据点标签的显示格式。
setPointLabelsColor(const QColor &color) 设置数据点标签的颜色。
pointLabelsColor() 返回数据点标签的颜色。
setPointLabelsFont(const QFont &font) 设置数据点标签的字体。
pointLabelsFont() 返回数据点标签的字体。
setPointsVisible(bool visible) 设置是否显示数据点。
arePointsVisible() 返回数据点是否可见。
setPointLabelsClipping(bool clipping) 设置是否裁剪超出绘图区域的数据点标签。
isPointLabelsClipping() 返回数据点标签是否裁剪超出绘图区域。
clicked(QPointF point) 鼠标点击曲线时发出的信号,参数为鼠标点击的数据点坐标。
hovered(QPointF point, bool state) 鼠标悬停在曲线上时发出的信号,参数为悬停状态以及悬停位置的数据点坐标。
pressed(QPointF point) 鼠标按下曲线时发出的信号,参数为鼠标按下的数据点坐标。
released(QPointF point) 鼠标释放曲线时发出的信号,参数为鼠标释放的数据点坐标。
doubleClicked(QPointF point) 鼠标双击曲线时发出的信号,参数为鼠标双击的数据点坐标。
QScatterSeries 类
QSplineSeries 主要用于绘制光滑曲线,通过添加一系列的数据点,可以在图表中呈现出相应的曲线形状。
QScatterSeries 是 Qt Charts 模块中用于绘制散点图的类。它派生自 QXYSeries 类,用于表示图表中的一组散点数据,通过一系列的坐标点来显示离散的数据分布。
以下是关于 QScatterSeries 的一些方法以及说明:
QScatterSeries(QObject *parent = nullptr) 构造函数,创建一个 QScatterSeries 对象。
~QScatterSeries() 析构函数,释放 QScatterSeries 对象。
append(QPointF point) 向散点图中追加一个数据点。
append(QList<QPointF> points) 向散点图中追加一组数据点。
replace(int index, QPointF point) 替换指定索引处的数据点。
replace(QList<QPointF> points) 替换散点图中的所有数据点。
remove(int index) 移除指定索引处的数据点。
remove(int index, int count) 移除从指定索引开始的指定数量的数据点。
clear() 清空散点图中的所有数据点。
pointsVector() 返回散点图的数据点。
setMarkerShape(QScatterSeries::MarkerShape shape) 设置散点的形状,可以是圆形、方形等。
markerShape() 返回散点的形状。
setMarkerSize(qreal size) 设置散点的大小。
markerSize() 返回散点的大小。
setPen(const QPen &pen) 设置散点图的画笔,即散点的边框颜色和样式。
pen() 返回散点图的画笔。
setBrush(const QBrush &brush) 设置散点图的画刷,即散点的填充颜色。
brush() 返回散点图的画刷。
setBorderColor(const QColor &color) 设置散点的边框颜色。
borderColor() 返回散点的边框颜色。
setBackgroundColor(const QColor &color) 设置散点的背景颜色。
backgroundColor() 返回散点的背景颜色。
setBorderColor(const QColor &color) 设置散点的边框颜色。
borderColor() 返回散点的边框颜色。
setBrush(const QBrush &brush) 设置散点的画刷,即填充颜色。
brush() 返回散点的画刷。
setPen(const QPen &pen) 设置散点的画笔,即边框颜色和样式。
pen() 返回散点的画笔。
setUseOpenGL(bool enable) 设置是否使用 OpenGL 进行绘制。
useOpenGL() 返回是否使用 OpenGL 进行绘制。
setMarkerShape(QScatterSeries::MarkerShape shape) 设置散点的形状,可以是圆形、方形等。
markerShape() 返回散点的形状。
setMarkerSize(qreal size) 设置散点的大小。
markerSize() 返回散点的大小。
setMarkerColor(const QColor &color) 设置散点的颜色。
markerColor() 返回散点的颜色。
clicked(QPointF point) 鼠标点击散点时发出的信号,参数为鼠标点击的数据点坐标。
hovered(QPointF point, bool state) 鼠标悬停在散点上时发出的信
27.QSqlDatabase数据库组件
QSqlDatabase类
用此模块时必须要引入对应文件,需要在*.pro文件内增加QT += sql,并在头文件内导入QSqlDatabase模块才可以正常使用,该模块是用于管理数据库连接的核心类之一。它提供了一系列方法,使得在Qt应用程序中进行数据库操作变得方便和灵活。QSqlDatabase类的灵活性使得开发者能够与多种数据库系统(如SQLite、MySQL、PostgreSQL等)进行交互,而不必担心底层数据库细节。这有助于实现跨数据库的可移植性和更高层次的数据库访问抽象。
下面是QSqlDatabase类中一些常用的方法,以表格形式进行说明和概述:
QSqlDatabase::addDatabase(const QString &type, const QString &connectionName = QLatin1String(defaultConnection))
添加一个数据库连接,其中type指定数据库驱动类型,connectionName指定连接的名称,默认为默认连接。返回创建的数据库连接对象。
QSqlDatabase::database(const QString &connectionName = QLatin1String(defaultConnection), bool open = true)
获取指定连接名称的数据库连接对象。如果数据库连接不存在,会创建一个新的连接。如果open为true,则尝试打开数据库连接。
QSqlDatabase::removeDatabase(const QString &connectionName = QLatin1String(defaultConnection))
移除指定连接名称的数据库连接。如果该连接当前处于打开状态,则会被关闭。
QSqlDatabase::setHostName(const QString &host) 设置数据库服务器的主机名。
QSqlDatabase::setDatabaseName(const QString &name) 设置要连接的数据库的名称。
QSqlDatabase::setUserName(const QString &name) 设置用于连接数据库的用户名。
QSqlDatabase::setPassword(const QString &password) 设置用于连接数据库的密码。
QSqlDatabase::setPort(int port) 设置数据库服务器的端口号。
QSqlDatabase::open() 打开数据库连接。如果连接成功,返回true,否则返回false。
QSqlDatabase::close() 关闭数据库连接。
QSqlDatabase::isOpen() 判断数据库连接是否打开。返回true表示连接已打开,false表示连接未打开。
QSqlDatabase::tables(QSql::TableType type = QSql::Tables) 返回数据库中的表的列表。
可以指定表的类型,如QSql::Tables表示用户表,QSql::SystemTables表示系统表。
QSqlDatabase::commit() 提交当前事务。
QSqlDatabase::rollback() 回滚当前事务。
QSqlDatabase::transaction() 开始一个新事务。
这些方法提供了管理和操作数据库连接的基本功能,包括连接数据库、设置连接参数、打开和关闭连接、执行事务等。在实际使用中,
开发者可以根据需要选择适当的方法来管理数据库连接和执行数据库操作。
1.1 逐条记录插入
初始化数据库我们可以通过调用QSqlDatabase::addDatabase来打开,在打开参数中支持多种数据库类型的选择,包括但不限于 SQLite、MySQL、PostgreSQL、Oracle、ODBC 等,每种数据库类型对应一个特定的驱动,开发者可以通过指定数据库类型和连接名称创建相应的数据库连接。
QSqlDatabase::addDatabase 是一个静态方法,用于向应用程序中添加一个数据库连接。此方法允许你为不同的数据库类型添加连接,并且你可以为每个连接指定一个唯一的名称。
static QSqlDatabase QSqlDatabase::addDatabase(const QString &type, const QString &connectionName =
QLatin1String(defaultConnection));
参数说明
type: 字符串,表示数据库的类型,例如 “QSQLITE”、“QMYSQL” 等,具体取决于你所使用的数据库驱动。
connectionName: 字符串,表示连接的名称,默认为 defaultConnection。可以通过这个名称在应用程序中区分不同的数据库连接。
返回值
返回创建的 QSqlDatabase 对象,可以使用这个对象进行进一步的数据库配置和操作。如果不提供连接名称,将使用默认的连接名称 defaultConnection。在一个应用程序中,你可以同时拥有多个数据库连接,每个连接都有一个唯一的名称。
在打开后接着我们就可以通过执行db.exec()的方式向特定数据库内插入数据,如下代码所示,通过在编辑框内提取出所需参数并对数据库进行初始化,当出事后成功后则调用db.exec()函数插入记录,最后通过db.commit()提交事务刷新到数据库中。
void MainWindow::on_pushButton_clicked()
{
// 指定数据库驱动类型
QSqlDatabase db = QSqlDatabase::addDatabase(ui->lineEdit_type->text());
db.setDatabaseName(ui->lineEdit_dir->text());
if (!db.open())
{
QMessageBox::information(nullptr, "信息", db.lastError().text(), QMessageBox::Ok);
}
// 获取文本内容
QString plainText = ui->plainTextEdit->toPlainText();
// 使用 split() 函数分割成行
QStringList lines = plainText.split('\n', Qt::SkipEmptyParts);
// 遍历每一行
for (const QString &line : lines)
{
db.exec(line);
}
// 提交事务请求
bool ref = db.commit();
if(ref == true)
{
QMessageBox::information(nullptr, "信息", "初始化失败", QMessageBox::Ok);
}
else
{
QMessageBox::information(nullptr, "信息", "执行初始化成功", QMessageBox::Ok);
}
db.close();
}
插入数据
void sqldatabasestudy::on_pushButton12_clicked()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("./database2.sqlite");
if (!db.open()) {
QMessageBox::information(nullptr, "信息", db.lastError().text(), QMessageBox::Ok);
return; // 如果数据库无法打开,则退出函数
}
QString plainText = ui.plainTextEdit->toPlainText();
QStringList lines = plainText.split('\n', Qt::SkipEmptyParts);
// 使用与db关联的QSqlQuery对象
QSqlQuery query(db);
for (const QString& line : lines) {
if (!query.exec(line)) {
QMessageBox::information(nullptr, "错误", "SQL执行失败: " + line + "\n" + query.lastError().text(), QMessageBox::Ok);
break; // 如果一条SQL语句失败,则停止执行后续语句
}
else
{
QMessageBox::information(nullptr, "信息", "插入数据成功", QMessageBox::Ok);
}
}
db.close();
}