Qt——窗口部件及窗口类型、坐标系统
1.QWidget类继承QObject和QPaintDevice类是所有用户界面组件的父类QObject是所有支持Qt对象模型的基类QPaintDevice是Qt中所有可绘制组件的基类QWidget的功能QWidget能够绘制自己和处理用户的输入QWidget是Qt中所有窗口组件类的父类QWidget是所有窗口组件的抽象Qt中的每个窗口组件都是一个QWidgetQWidget类对象常作为父组件或顶级组件使用#include Widget.h #include QApplication int main(int argc, char *argv[]) { QApplication a(argc, argv); QWidget w; w.setWindowTitle(Hello World); //设置窗口标题 w.show(); return QCoreApplication::exec(); }运行结果由于上面的QWidget w对象没有父组件,所以QWidget w便成为了没有父组件的顶级组件,从而生成了窗口自带标题栏、最大化、最小化以及关闭功能2.功能类QLabel组件用于显示一个提示性的字符串是功能性组件一般需要父组件作为容器QLabel可以作为窗口存在但没什么意义#include Widget.h #include QtGui #include QApplication #include QLabel int main(int argc, char *argv[]) { QApplication a(argc, argv); QWidget w; QLabel l(w); l.setText(标签); w.setWindowTitle(Hello World); //设置窗口标题 w.show(); return QCoreApplication::exec(); }运行结果若将QLabel设置为顶级组件独立存在将拥有一个包含自己的窗口因为QLabel继承了QWidget所有拥有QWidget的所有成员函数但这种做法通常没有意义#include Widget.h #include QtGui #include QApplication #include QLabel int main(int argc, char *argv[]) { QApplication a(argc, argv); // QWidget w; QLabel l ; l.setText(标签); l.setWindowTitle(Hello World); //设置窗口标题 l.show(); return QCoreApplication::exec(); }运行结果3.Qt中可以根据需要定制窗口样式窗口类型Qt::Dialog——对话框类型Qt::Window——主窗口类型Qt::SplashScreen——启动画面类型窗口标志Qt::WindowStaysOnTopHint ——窗口始终在最顶层Qt::WindowContextHelpButtonHint ——最大化最小化按钮变为帮助按钮#include Widget.h #include QtGui #include QApplication #include QLabel int main(int argc, char *argv[]) { QApplication a(argc, argv); // QWidget w(NULL, Qt::Dialog); //对话框的顶级组件的样式第一个参数是父类为空所以是顶级组件 // QWidget w(NULL, Qt::Window); //窗口类型的顶级组件的样式 // QWidget w(NULL, Qt::SplashScreen); //启动画面类型的顶级组件的样式通常做欢迎界面 //QWidget w(NULL, Qt::Window|Qt::WindowStaysOnTopHint); //窗口始终在最顶层 QWidget w(NULL, Qt::Window|Qt::WindowContextHelpButtonHint); //最大化最小化按钮变为帮助按钮 w.resize(400,300); //改变窗口大小 QLabel l(w); l.setText(标签); w.setWindowTitle(Hello World); //设置窗口标题 w.show(); return QCoreApplication::exec(); }4.坐标系统GUI操作系统都拥有特定的坐标系统图形界面程序在坐标系统中进行窗口和部件的定位定位类型顶级窗口部件的定位、窗口内部件的定位、窗口部件的大小设置QWidget类中的坐标系统成员函数x()y()width()height()geometry():x()、y()、width()、height()frameGeometry():x()、y()、width()、height()#include Widget.h #include QtGui #include QApplication #include QLabel int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; w.show(); qDebug()QWidget: ; qDebug()w.x(); qDebug()w.y(); qDebug()w.width(); qDebug()w.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 QCoreApplication::exec(); }注意geometry()和frameGeometry()中的几何数据必须在show()调用后才有效因为QT是跨平台的在不同平台对应的窗口位置不一样5.窗口部件的大小设置QWidget类提供了成员函数改变窗口部件的大小void resize(int w,int h) void resize(const QSize )改变窗口部件的位置void move(int x,int y) void move(const QPoint )#include Widget.h #include QtGui #include QApplication #include QLabel int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; w.resize(300,200); w.move(120,120); w.show(); qDebug()QWidget: ; qDebug()w.x(); qDebug()w.y(); qDebug()w.width(); qDebug()w.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 QCoreApplication::exec(); }运行结果QWidget:120120300200QWidget::geometry()121158300200QWidget::frameGeometry()1201203022395.QPushButton组件用于接收用户点击事件能够显示提示性字符串是功能性组件需要父组件作为容器能够在父组件中进行定位#include Widget.h #include QtGui #include QApplication #include QLabel #include QPushButton int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; QPushButton b1(w); //生成QPushButton对象其父组件是QWidget b1.setText(Button1); //设置显示的字符串 b1.move(10,10); //移动到坐标1010 b1.resize(100,25); //设置宽和高 QPushButton b2(w); //生成QPushButton对象其父组件是QWidget b2.setText(Button2); //设置显示的字符串 b2.move(120,10); //移动到坐标1010 b2.resize(100,25); //设置宽和高 w.resize(300,200); w.move(120,120); w.show(); qDebug()QWidget: ; qDebug()w.x(); qDebug()w.y(); qDebug()w.width(); qDebug()w.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 QCoreApplication::exec(); }
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2470112.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!