关于界面按钮控制的问题

wjhx 2020-05-09 08:12:04
想实现对界面上按钮状态的控制,对界面上有多个控件,想实现选择了tree中的一行,同时某个text输入了值后,按钮才可用,状态与输入或选择是关联的。这个在delphi和c#中都是可以的,QT中也是应该可以实现的。

查询资料看有用hasAcceptableInput,但这个好象只有text有,其它控件怎么实现,请赐教,谢谢。
...全文
434 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjhx 2020-06-19
  • 打赏
  • 举报
回复
算是解决吧,和我想的不一样,我想的是在btn上来控制,只要写一处代码就可以了,现在是多处控制,各相关的控件各自检测状态。写了一个配置的方法,组合了各种状态后,相关控件改变时调用
dinjay 2020-05-18
  • 打赏
  • 举报
回复
listview这种没有你说的这种hasAcceptableInput判断,需要单独处理,你可以在textChanged的时候emit信号,list控件connect这个信号然后在对应的slot里做判断来决定是否要enable list控件。
wjhx 2020-05-17
  • 打赏
  • 举报
回复
引用 5 楼 hitzsf 的回复:
//上面那个connect信号槽 我都不明白啥意思 void department_edit::on_d_name_textChanged(const QString &arg1) { if(ui->d_name->hasAcceptableInput()) ui->ok_button->setEnabled(true); }
这个是根据输入框的有效状态,来设置按钮的可用状态。 我是用于一个输入框,比如选择一个类型、输入一个姓名,我是想必须选择一个有效类型且输入了姓名后,按钮才是可用的,否则为灰色。这个在delphi 和C#中都可以实现,QT肯定也是可以的,只是现在我知道text有这个hasAcceptableInput,list一类的不知道组合怎么用。
wjhx 2020-05-17
  • 打赏
  • 举报
回复
引用 4 楼 scribbler 的回复:
setEnabled无非是从Text和List的状态组合确定而已? 还是你想问如何获得listview的行或者列的点击事件?
从Text和List的状态组合确定
hitzsf 2020-05-10
  • 打赏
  • 举报
回复
//上面那个connect信号槽 我都不明白啥意思 void department_edit::on_d_name_textChanged(const QString &arg1) { if(ui->d_name->hasAcceptableInput()) ui->ok_button->setEnabled(true); }
scribbler 2020-05-10
  • 打赏
  • 举报
回复
setEnabled无非是从Text和List的状态组合确定而已? 还是你想问如何获得listview的行或者列的点击事件?
wjhx 2020-05-09
  • 打赏
  • 举报
回复
这里我没有说明白,是这样的,比如我将一个按钮的状态绑定到一个text的校验上: QRegExp regExp("^\\w+$"); ui->d_name->setValidator(new QRegExpValidator(regExp, this)); connect(ui->ok_button, SIGNAL(clicked()), this, SLOT(accept())); 控件名称为d_name,然后: void department_edit::on_d_name_textChanged(const QString &arg1) { ui->ok_button->setEnabled(ui->d_name->hasAcceptableInput()); } 这样这个按钮的状态会根据输入的内容自动变化。 我现在是要绑定多个控件到一个按钮上,而这个hasAcceptableInput只有text控件才有(好象是),判定的条件里有listview一类的,这个应该怎么控制。我点中了listview中的一条,并且输入了一个必须的数据后,按钮可用,否则,两者(或多者)缺一不可。 不知道我说的能不能看明白。
Italink 2020-05-09
  • 打赏
  • 举报
回复
多百度,或则查阅官方文档,比如这个,你可以点选代码中的QLineEdit 按F1,转到对应文档
Italink 2020-05-09
  • 打赏
  • 举报
回复
setReadOnly(false); //或 setEnabled(false); //或 setFocusPolicy(Qt::NoFocus);//无法获得焦点,自然无法输入,其他文本控件类似

16,200

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧