Qt控件:QWidget 核心属性
·
目录
一、核心属性表格

二、enable

参数介绍:
- true:表示启用,可以进行正常操作
- false:表示禁用,不能进行操作
注意事项:
- 如果一个widget被禁用,那么他的子类也会被禁用
- 这里的禁用是用户无法进行输入事件,外观上一般为灰色
代码示例:
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
QPushButton* bnt=new QPushButton(this);
bnt->setText("被禁用的控件");
bnt->setEnabled(false);//奖bnt这个控件禁用
}
运行结果:
- 控件变成灰色
- 无法进行点击操作

简单运用:
- 用按钮2来控制按钮1是否被禁用
- 没有被禁用时打印日志
- 被禁用时无法被点击
void Widget::on_pushButton_clicked()
{
qDebug()<<"我被点击了!!!";
}
void Widget::on_pushButton_2_clicked()
{
bool flag=ui->pushButton->isEnabled();
if(flag)
{
ui->pushButton->setEnabled(false);
ui->pushButton->setText("我禁止被点击");
ui->pushButton_2->setText("启用");
}
else
{
ui->pushButton->setEnabled(true);
ui->pushButton->setText("我可以被点击");
ui->pushButton_2->setText("禁用");
}
}


三、geometry

参数介绍:
- x:横坐标
- y:纵坐标
- width:宽度
- height:高度
注意事项:
- x和y默认情况下是表示控件的左上角到窗口的左上角的横纵坐标
- x是从左到右增加的,y是从上到下增加的
- widget 作为⼀个窗⼝ (带有标题栏, 最⼩化, 最⼤化, 关闭按钮), 那么在计算尺⼨和坐标的时候就有两种算法. 包含 window frame 和 不包含 window frame
- x(), y(), frameGeometry(), pos(), move() 都是按照包含 window frame 的⽅怯来计算的
- geometry(), width(), height(), rect(), size() 则是按照不包含 window frame 的⽅怯来计算的

代码示例:
void Widget::on_pushButton_clicked()
{
QRect Rect=ui->label->geometry();//获取label的位置
ui->label->setGeometry(Rect.x()+100,Rect.y()+100,Rect.width()+20,Rect.height()+20);//将label的位置往下移动100个像素点,向右移动100个像素点,高度和宽度各增加20像素点
}
运行结果:
- 每次点击都可以使标签移动一定的单位


简单运用:
- 用4个按钮作为控制键控制一个标签进行上下左右的移动
void Widget::on_pushButton_up_clicked()
{
QRect rect=ui->pushButton_label->geometry();
ui->pushButton_label->setGeometry(rect.x(),rect.y()-5,rect.width(),rect.height());
}
void Widget::on_pushButton_left_clicked()
{
QRect rect=ui->pushButton_label->geometry();
ui->pushButton_label->setGeometry(rect.x()-5,rect.y(),rect.width(),rect.height());
}
void Widget::on_pushButton_right_clicked()
{
QRect rect=ui->pushButton_label->geometry();
ui->pushButton_label->setGeometry(rect.x()+5,rect.y(),rect.width(),rect.height());
}
void Widget::on_pushButton_down_clicked()
{
QRect rect=ui->pushButton_label->geometry();
ui->pushButton_label->setGeometry(rect.x(),rect.y()+5,rect.width(),rect.height());
}

四、windowTitle

代码示例:
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
this->setWindowTitle("QQ音乐");
}
运行结果:

五、windowIcon

参数介绍:
- QIcon:图片的路径
注意事项:
- 避免使用绝对路径:代码中的绝对路径在程序发布到其他电脑后必然失效,应严格避免,使用相对路径。
- 确保相对路径准确匹配:使用 相对路径时,必须在程序工作目录下创建完全对应的
images文件夹并放入图片,否则加载将失败。 - 首选 Qt 资源系统:最可靠的方式是将图片添加到项目的
.qrc资源文件中,通过“:/icons/icon.png”方式访问,这样资源会被编译进程序内部,彻底避免路径问题。
代码示例:
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
QIcon icon(":/PixPin_2026-04-27_09-30-09.png");
this->setWindowIcon(icon);
}
运行结果:

补偿知识:
- 创建⼀个 Qt Resource File (qrc ⽂件)
- 使⽤ : 作为开头, 表⽰从 qrc 中读取资源
- / 是上⾯配置的前缀
- PixPin_2026-04-27_09-30-09.png 是资源的名称


六、windowOpacity
不透明度

参数介绍:
- 返回一个0~1的小数
- 越大透明度越低,0表示完全透明,1表示完全不透明
代码示例:
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
this->setWindowOpacity(0.5);//设置窗口半透明
}
运行结果:
- 窗口半透明

七、cursor
光标样式

内置光标:
- Qt::ArrowCursor- 标准箭头光标
- Qt::PointingHandCursor- 手形光标(通常用于链接)
- Qt::WaitCursor- 等待/忙碌光标(通常是沙漏或旋转圆圈)
- Qt::CrossCursor- 十字光标
- Qt::IBeamCursor- 文本输入光标(I型)
- Qt::SizeAllCursor- 移动光标(四个方向的箭头)
- Qt::SizeHorCursor- 水平调整大小光标
- Qt::SizeVerCursor- 垂直调整大小光标
- Qt::SizeFDiagCursor- 左上到右下调整大小光标
- Qt::SizeBDiagCursor- 左下到右上调整大小光标
- Qt::ForbiddenCursor- 禁止操作光标(带斜杠的圆圈)
代码示例:
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
ui->pushButton->setCursor(QCursor(Qt::WaitCursor));//将光标设置为一个内置光标
}
运行结果:
- 移动到该按键区域光标变为加载样式
简单运用:
- 设置一个个性化光标
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
QPixmap pixmap(":/PixPin_2026-04-27_10-25-35.png");// 创建⼀个位图对象, 加载⾃定义光标图⽚
pixmap.scaled(32,32);//缩放图片为32*32的像素图片
QCursor cursor(pixmap,3,3);//创建一个cursor对象,并把热点设置为(3,3)
ui->pushButton->setCursor(cursor);
}
补偿事项:
- 热点是光标点击有效的点,当设置一个个性化光标时图片太大,设置热点可以确定图片的哪个位置点击是有效的
八、font
字体样式

参数介绍:
- QFont:

代码示例:
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
QFont font;
font.setPointSize(20);//字体大小设置为20
font.setFamily("宋体");//字体样式为宋体
font.setBold(true);// 设置字体加粗
font.setItalic(true);// 设置字体倾斜
font.setUnderline(true);// 设置字体下划线
ui->label->setFont(font);//将样式设置到该文本
}
运行结果:

九、toolTip
提示说明

代码示例:
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
ui->pushButton->setToolTip("这是一个yes按键");
}
运行结果:
- 光标移动到按键上会有提示说明

十、focusPolicy
焦点

参数类型:
- Qt::FocusPolicy 是⼀个枚举类型. 取值如下
| 枚举值 | 说明 |
|---|---|
|
| 控件不参与焦点管理,无法通过键盘或鼠标获取焦点(默认值)。 |
|
| 控件可以通过按 Tab 键获得焦点。 |
|
| 控件可以通过鼠标点击获得焦点。 |
|
| 控件可以通过 Tab 键和鼠标点击获得焦点。这是大多数可编辑控件的默认设置。 |
|
| 控件可以通过鼠标滚轮获得焦点(在某些平台或样式中可能不可用)。 |
代码示例:
- 全设置为TabFocus

运行结果:
- 每点击一下键盘的Tab键就会换到下一个输入框

更多推荐



所有评论(0)