初学QT笔记: 多个QLineEdit之间的焦点设置、切换、获取
来源:互联网 发布:淘宝已买到宝贝打不开 编辑:程序博客网 时间:2024/06/04 23:35
学习实现计算器中,点击一个lineEdit后,再点击数字按钮,可以将数据或符号显示在选定的lineEdit中。
bool eventFilter(QObject *, QEvent *);
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_iCalFlag = 0;
m_editFlag = 0;
ui->firstLineEdit->installEventFilter(this);
ui->secondLineEdit->installEventFilter(this);
ui->zeroButton->setFocusPolicy(Qt::NoFocus);
ui->oneButton->setFocusPolicy(Qt::NoFocus);
ui->twoButton->setFocusPolicy(Qt::NoFocus);
//QWidget::setFocusPolicy(Qt::NoFocus);
//QPushButton::setFocusPolicy(Qt::NoFocus);
//this->setFocusPolicy(Qt::NoFocus);
}
/* 判断焦点位置 */
bool MainWindow::eventFilter(QObject *watched, QEvent *event){
if(watched == ui->firstLineEdit){if(event->type() == QEvent::FocusIn){QPalette p = QPalette();p.setColor(QPalette::Base, Qt::green);ui->firstLineEdit->setPalette(p);printf("get first focusin \r\n");m_editFlag = 1;}else if(event->type() == QEvent::FocusOut){QPalette p= QPalette();p.setColor(QPalette::Base, Qt::white);ui->firstLineEdit->setPalette(p);printf("get first focusout \r\n");m_editFlag = 0;}}else if(watched == ui->secondLineEdit){if(event->type() == QEvent::FocusIn){QPalette p= QPalette();p.setColor(QPalette::Base, Qt::green);ui->secondLineEdit->setPalette(p);printf("get two focusin \r\n");m_editFlag = 2;}else if(event->type() == QEvent::FocusOut){QPalette p= QPalette();p.setColor(QPalette::Base, Qt::white);ui->secondLineEdit->setPalette(p);printf("get two focusout \r\n");m_editFlag = 0;}}return QWidget::eventFilter(watched, event);}
单个控件分别设置焦点为无焦点即可。
Qt::TabFocus 0x1the widget accepts focus by tabbing.
Qt::ClickFocus 0x2the widget accepts focus by clicking.
Qt::StrongFocus TabFocus | ClickFocus | 0x8the widget accepts focus by both tabbing and clicking. On OS X this will also be indicate that the widget accepts tab focus when in 'Text/List focus mode'.
Qt::WheelFocus StrongFocus | 0x4like Qt::StrongFocus plus the widget accepts focus by using the mouse wheel.
Qt::NoFocus 0 the widget does not accept focus.
尝试了所有的pushbotton一个接口禁用,但是失败了。
在ui界面设置属性中直接设置更方便。
选中控件,在右侧属性栏中找到QWidget->focusPolicy->选择NoFocus,则此控件不产生焦点。
1 0
- 初学QT笔记: 多个QLineEdit之间的焦点设置、切换、获取
- QT初学笔记——多窗口之间的切换
- 初学Qt:QLineEdit设置为不可编辑
- Qt中QLineEdit切换
- qt 获取动态生成的qlineedit值
- Qt 设置QLineEdit的输入格式
- 初学Qt:QLineEdit类信号总结
- QT实现多窗口之间的切换
- qt学习笔记之QLineEdit
- QlineEdit的过滤器设置
- qt按键焦点切换
- Qt自由切换焦点
- Qt控件焦点切换
- 多个layout界面之间的切换
- 多个摄像机之间的切换
- 多个Activity之间的切换
- 多个Fragment之间的切换
- 多个 Git 账户之间的切换
- TD_Mgd_3.03_9.dll错误未能加载文件或程序集“TD_Mgd_3.03_9
- oracle数据导入与导出
- 在一张表中,而不在另一张表中的记录
- grub2详解
- 【bzoj4094】[Usaco2013 Dec]Optimal Milking 线段树
- 初学QT笔记: 多个QLineEdit之间的焦点设置、切换、获取
- Hibernate的抓取策略
- Java Learning Note – inner class(2)
- 安装 Python2.7到 centos
- list.add数据覆盖的问题
- eclipse断点调试快捷键
- Hyperbolic Discounting(双曲贴现)
- linux下设置tomcat脚本启动
- SAP数据更新