QT QdateEdit设置不可输入,用到findchild()或者findchildren和dumpObjectTree()函数

QdateEdit的readonly属性会把整个控件设置成不可输入,连下拉出来的控件先日期都用不了,明显不合预期,我只是禁止左边那个显示日期区域不能输入,一种方法是设置焦点属性为noFous,另一个方法比较麻烦,但可以学会findchild的使用方法

ui->EndEdit->dumpObjectTree();

QLineEdit* lEdit = ui->EndEdit->findChild<QLineEdit *>();

    lEdit->setReadOnly(true);
上面的代码是一个例子,对于一个复杂已封装好的控件,你不知道是由什么组合成的话,dumpObjectTree()可以帮到你,它可以列出复杂控件所有的孩子,使用后输出结果如下:

QDateEdit::EndEdit

QLineEdit::qt_spinbox_lineedit

QWidgetLineControl::

QValidator::qt_spinboxvalidator 

说明一个QDateEdit由三个子控件组成,看到一个 QLineEdit::qt_spinbox_lineedit 孩子,qt_spinbox_lineedit 是孩子的名字,QLineEdit* lEdit = ui->EndEdit->findChild<QLineEdit *>();此句是把孩子提取出来使用,可以参考QT帮助文档findchild()或者findchildren的用法,然后我们就是要对此控件进行设置成只读属性,大功告成

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值