d在QT项目中经常会用到QWidget的小的弹窗页面,这些页面里面会有新的操作按键,这时候不想让原本页面的按键影响,就要让原本页面模态化(禁止操作)
但是QWidget中如果需要用到键盘输入,(这个也是操作,已经模态化不能使用键盘),就会发现键盘可以点击,但是内容无法输入。
这里显示两种模态化的方法
1:直接模态化,禁止其他页面的各种操作响应,必须在结束当前页之后,才能操作,在QWidget中写入:
this->setWindowModality(Qt::ApplicationModal);
2:解决键盘无法输入的问题:要将QWidget换成QDialog类,也就是原本设计的页面是QWidget,要换成QDialog对话类,并且在触发这个QDialog对话页面的地方要新new 一个页面
void Metel_StretchExperiment::showExtensome()//显示引申计设置页面的槽函数 页面为QDialog对话
{
extensometer = new Extensometer_settings(this); //需要new一个要显示的页面
extensometer->show(); //调用show方法显示页面
extensometerflag = true;
//安装引申计标志
}
设置完之后要在QDialog对话页面中写上:
this->setWindowModality(Qt::WindowModal);//解决虚拟键盘无法使用
这样就实现了,能在弹出的页面上操作虚拟键盘输入。
总的来说是两种方法:
this->setWindowModality(Qt::ApplicationModal);//实现全部模态 完全禁止其他页面操作响应
this->setWindowModality(Qt::WindowModal);//解决虚拟键盘无法使用