浅墨浓香

想要天亮进城,就得天黑赶路。
随笔 - 743, 文章 - 16, 评论 - 87, 阅读 - 53万

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

第7课 Qt中的坐标系统

Posted on   浅墨浓香  阅读(681)  评论(4编辑  收藏  举报

1. 坐标系统

(1)GUI操作系统都有特定的坐标系统

(2)图形界面程序在坐标系统中进行窗口和部件的定位

(3)定位类型

  ①顶级窗口部件的定位

  ②窗口内部件的定位

  ③窗口部件的大小设置

(4)QWidget类提供的定位函数

  ①Qt使用统一的坐标系统定位窗口部件的位置和大小

  ②Qt部件类提供成员函数在坐标系统中进行定位

 

2. QWidget类提供了窗口部件所需的坐标系统成员函数

 

(1):x()、y();在父窗口中的起始坐标

(2):width()、height();客户区的宽度和高度

(3)geometer():客户区的几何尺寸

  ①x()、y():客户区在父窗口中的起始坐标

  ②width()、height():客户区的大小

(4)frameGeometry():框架几何尺寸

  ①x()、y():整个窗口在父窗口中的起始坐标

  ②width()、height():整个窗口的大小(含非客户区)

  ▲注意:geometry()和frameGeometry()中的几何数据必须在show()调用后才有效

3. 窗口部件的大小设置——利用QWidget类提供的成员函数

(1)改变窗口部件的大小

  ①void resize(int w, int h);

  ②void resize(const QSize&);

(2)改变窗口部件的位置

  ①void move(int x, int y)

  ②void move(const QPoint&)

4. QPushButton组件

(1)用于接受用户点击事件

(2)能够显示提示性字符串

(3)是功能性组件,需要父组件作为容器

(4)能够在父组件中进行定位

【编程实验】Qt坐标系统及窗口子组件大小和位置设置

复制代码
#include <QApplication>
#include <QPushButton>
#include <QDebug>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget w;   //顶级窗口
    QPushButton b(&w);  //生成QPushButton对象
    QPushButton b1(&w);

    b.setText("Button"); //设置显示的字符串
    b.move(10, 10);      //移动到坐标(10, 10)
    b.resize(100, 50);   //设置大小 width =100,heigth = 50

    b1.setText("Button"); //设置显示的字符串
    b1.move(120, 10);      //移动到坐标(120, 10)
    b1.resize(100, 50);   //设置大小 width =100,heigth = 50

    w.resize(240, 100);
    w.move(120, 120);  //相对于桌面坐标系统
    w.show();

    qDebug()<<"QWidget:";
    qDebug()<<w.x();      //120
    qDebug()<<w.y();      //120
    qDebug()<<w.width();  //240
    qDebug()<<w.height(); //100

    qDebug()<<"QWidget::geometry()";
    qDebug()<<w.geometry().x();      //128
    qDebug()<<w.geometry().y();      //151
    qDebug()<<w.geometry().width();  //240
    qDebug()<<w.geometry().height(); //100

    qDebug()<<"QWidget::frameGeometry";
    qDebug()<<w.frameGeometry().x();    //120
    qDebug()<<w.frameGeometry().y();    //120
    qDebug()<<w.frameGeometry().width();//256
    qDebug()<<w.frameGeometry().height();//139

    return a.exec();
}
复制代码

5. 小结

(1)Qt中的几何坐标以左上角为原点

        水平为x轴,从左向右为正向

        垂直为y轴,从上到下为正向

(2)Qt中的GUI组件以左上角进行定位

(3)Qt中的GUI组件可以在坐标系统中进行大小设置

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示