一、Qt Widgets 问题交流
1.输入框 QLineEdit 设置 Validator 过滤后,对于异常的输入进行提示
QWidget 或者 QML 的输入框可以设置 Validator 过滤器,设置后不符合条件的输入会被过滤掉,当前文本不变。有时要在异常输入时进行提示,这就需要获取到过滤器的状态。 Qt 虽然没有提供相关的接口,但 QValidator 类提供了 validate 虚函数供自定义过滤规则,我们可以重写该接口,拿到父类返回的状态值。状态为枚举类型,其中 Invalid 表示是不符合条件的输入,不会显示到编辑框中。
#pragma once
#include
class MyRegExpValidator : public QRegExpValidator
{
Q_OBJECT
public:
explicit MyRegExpValidator(QObject *parent = nullptr)
: QRegExpValidator(parent){ }
QValidator::State validate(QString &input, int& pos) const override
{
//QValidator::Invalid\QValidator::Intermediate\QValidator::Acceptable
//其中invalid表示输入不匹配
QValidator::State ret = QRegExpValidator::validate(input, pos);
emit stateChanged();
return ret;
}
signals:
void stateChanged() const;
};
二、Qt Quick 问题交流
1.View的delegate如果也是个View,那么就不能用model.roleName方式访问role值
一般情况下,在View中可以用roleName或者model.roleName的形式来访问对应行列的role值
参照文档:https://doc.qt.io/qt-5/qtquick-modelviewsdata-modelview.html#qml-data-models
ListView {
anchors.fill: parent
spacing: 2
model: ListModel {
ListElement { color: "red" }
ListElement { color: "green" }
ListElement { color: "blue" }
}
delegate: Rectangle {
width: ListView.view.width
height: 30
color: model.color
}
}
如果delegate又是一个View,那么就不能用model.roleName的形式访问值了,因为View自身有个model属性,只能使用roleName的形式,不然会报错
ListView {
anchors.fill: parent
spacing: 2
model: ListModel {
ListElement { color: "red" }
ListElement { color: "green" }
ListElement { color: "blue" }
}
delegate: ListView {
width: ListView.view.width
height: 30
//不能再写model.color
property color subColor: color
Rectangle {
anchors.fill: parent
color: subColor
}
}
}
三、其他
1.使用 std::this_thread::sleep_for / sleep_until 延时,系统时间往前设置后延时无法结束
出现问题的环境 MSVC2017/2019
可以替换为 QThread::sleep 或者平台相关的延时函数,也可以用 std::condition_variable 来达到类似效果。下面这段代码,修改系统时间后,wait_for 会返回,判断状态不是 timeout 后再次等待。
connect(ui->pushButton,&QPushButton::clicked,[this]{
std::thread th([=](){
std::this_thread::sleep_for/sleep_until
for(int i=0;i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?