一、坐标系统

GUI操作系统都有特定的坐标系统,
图形处理界程序,在坐标系统中进行坐标中进行窗口和固件的定位

定位类型

1.顶级窗口部件的定位
2.窗口内部件的定位
3.窗口部件的大小设置

Qt使用统一的坐标系统定位窗口部件的位置与和大小
Qt部件类提供成员函数在坐标系统中进行定位
QWidget类提供了窗口部件所需的坐标系统成员函数
image.png

二、坐标系统相关的成员函数

image.png
x(),y()与frameGeomtry.x(),frameGeometry.y()相同,都是外边框;
geometry全部为内边框;
注意:geometry(几何)framegeometry中的几何数据必须在show()调用后才有效;

三、窗口部件的大小设置

Qwidget类提供了成员函数
改变窗口部件的大小:
void resize(int w,int h);void resize(const QSize&)
改变窗口部件位置:
void move(int x,int y);;void move(const Qpoint &)

四、QPushButon组件

QPushButton 用于接受用户点击事件
QPushButton 能够显示提示性字符串
QPushButton 是功能性组件,需要父组件作为容器
QPushButton 能够在父组件中进行定位

Qwidget w;     //生成Qwidget对象,顶级组件
QpushButton b(&w);//生成QPushButton对象,父组件为Qwidget
b.setText("Button");//设置显示的字符串
b.move(10,10);//移动到坐标(10,10)
b.resize(100,25);设置大小width=100,Height = 25

编程实验:窗口子组件的大小与位置

#include <QtGui/QApplication>
#include "MainWindow.h"
#include<QDebug>
#include<QPushButton>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    QPushButton b(&w);   //创建一个按钮
    QPushButton c(&w);   //创建一个按钮
    b.setText("Button"); //按钮名称
    c.setText("Button2"); //按钮名称

    b.move(20,20);    //按钮的位置xy
    c.move(80,20);    //按钮的位置xy
    b.resize(50,25); //按钮的大小
     c.resize(50,25); //按钮的大小
    w.resize(600,300);//对话框的大小
    w.move(10,10);   //对话框的位置
    w.show();
    qDebug()<<"QWidget:";
    qDebug()<<w.x();       //frameGeometry().x();相同
    qDebug()<<w.y();       //frameGeometry().y();相同
    qDebug()<<w.width();   //geometry().width();相同
    qDebug()<<w.height();  //geometry().height();相同

    qDebug()<<"QWidget::geometry";
    qDebug()<<w.geometry().x();
    qDebug()<<w.geometry().y();
    qDebug()<<w.geometry().width();
    qDebug()<<w.geometry().height();

    qDebug()<<"QWidget::frameGeometry";
    qDebug()<<w.frameGeometry().x();
    qDebug()<<w.frameGeometry().y();
    qDebug()<<w.frameGeometry().width();
    qDebug()<<w.frameGeometry().height();

    return a.exec();
}

五、小结

Qt中的几何坐标以左上角为原点
水平为x轴,从左向右为正向;垂直为y轴,从上到下为正向;
Qt中的GUI组件以左上角进行定位
Qt中的GUI组件可以在坐标系统中进行大小设置

郑重声明:以上内容参考狄泰软件学院系列课程!


YingLi
6 声望4 粉丝

From zero to hero.