文章目录
- 1.测试工程配置
- 2.成员函数
-
- 2.1 void setFixedHeight(int h)
- 2.2 void setFixedSize(const QSize &s)
- 2.3 void setFixedSize(int w, int h)
- 2.4 void setFixedWidth(int w)
- 2.5 void setFocus(Qt::FocusReason reason)
- 2.6 void setFocusPolicy(Qt::FocusPolicy policy)
- 2.7 void setFocusProxy(QWidget *w)
- 2.8 bool hasFocus() const
- 2.9 void QWidget::clearFocus()
- 2.10 QWidget *QWidget::focusWidget() const
1.测试工程配置
创建名为QtGuiAppTest的qwidget工程,带ui文件
2.成员函数
继承自QObject和QPaintDevice。QObject详见QObject各成员函数功能详细说明(文字+用例+代码+效果图)
2.1 void setFixedHeight(int h)
(1)功能说明
在不更改宽度的情况下将小部件的最小和最大高度设置为 h
(2)效果展示
(3)调用程序
QtGuiAppTest::QtGuiAppTest(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
this->setFixedHeight(300);
}
2.2 void setFixedSize(const QSize &s)
(1)功能说明
设置控件的最大与最小尺寸为s,从而防止窗口变化
(2)效果展示
(3)调用程序
QtGuiAppTest::QtGuiAppTest(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
this->setFixedSize(QSize(600, 400));
}
2.3 void setFixedSize(int w, int h)
重载函数
设置控件的宽度为w,高度为h
2.4 void setFixedWidth(int w)
设置控件的宽度为w
2.5 void setFocus(Qt::FocusReason reason)
(1)功能说明
将焦点设置在当前控件上(立即生效),并给出焦点改变原因reason,该信息可在focusInEvent()中即时获取到。
参数reason为枚举,具体如下:
常量名 | 常量值 | 描述 |
Qt::MouseFocusReason | 0 | 由于鼠标点击改变了焦点 |
Qt::TabFocusReason | 1 | 由于按下 Tab 键改变了焦点 |
Qt::BacktabFocusReason | 2 | 此输入(可能包括 Shift 或 Control 键;例如 Shift+Tab)改变了焦点 |
Qt::ActiveWindowFocusReason | 3 | 使此窗口处于活动状态或处于非活动状态从而改变了焦点 |
Qt::PopupFocusReason | 4 | 应用程序打开/关闭了一个抓取/释放了键盘焦点的弹出窗口导致焦点改变 |
Qt::ShortcutFocusReason | 5 | 用户键入了标签的伙伴关系快捷方式导致焦点改变 |
Qt::MenuBarFocusReason | 6 | 菜单栏成为焦点 |
Qt::OtherFocusReason | 7 | 其他reason,通常是特定于应用程序的。 |
(2)效果展示
(3)调用程序
QtGuiAppTest.ui
QtGuiAppTest.h
#pragma once
#include <QtWidgets/QWidget>
#include "ui_QtGuiAppTest.h"
#include<qlineedit.h>
class MyLineEdit : public QLineEdit
{
Q_OBJECT
public:
MyLineEdit(QWidget* parent = nullptr);
protected:
void focusInEvent(QFocusEvent* event) override;
void focusOutEvent(QFocusEvent* event) override;
};
class QtGuiAppTest : public QWidget
{
Q_OBJECT
public:
QtGuiAppTest(QWidget *parent = Q_NULLPTR);
~QtGuiAppTest();
public slots:
void SlotTestFocus(int id);
private:
Ui::QtGuiAppTestClass ui;
MyLineEdit* m_pLe;
};
QtGuiAppTest.cpp
#include "QtGuiAppTest.h"
#include<qlineedit.h>
#include<qevent.h>
QtGuiAppTest::QtGuiAppTest