获取方法
首先看一段程序代码:
int main(int argc, char *argv[]) { QApplication a(argc, argv); Dialog w; w.show(); return a.exec(); }
a为应用程序,w为对话框;我们获取屏幕大小,需要从变量a这里获取;
QScreen *iScreen = a.primaryScreen(); QSize rScreenSize = iScreen->size();
虽然把屏幕大小获得了,但是我们改变UI大小的程序在Dialog w里面;这时候我们需要重载Dialog,将获得尺寸传入Dialog里面,首先在头文件dialog.h中修改如下代码
class Dialog : public QDialog { Q_OBJECT public: explicit Dialog(QWidget *parent = 0); ~Dialog(); private: Ui::Dialog *ui; };
将上述代码改为
class Dialog : public QDialog { Q_OBJECT public: explicit Dialog(int iWidth,int iHeight,QWidget *parent = 0); ~Dialog(); private: Ui::Dialog *ui; int width; int height; };
同时,修改dialog.cpp为
Dialog::Dialog(int iWidth,int iHeight,QWidget *parent) : QDialog(parent), ui(new Ui::Dialog) { widht = iWidth; height = iHeight-50; ui->setupUi(this); this->setFixedSize(width,height); //...... }
OK,这样就可以实现,程序窗口自适应屏幕大小了,但是这样有个弊端:窗体中所添加的所有空间,都必须随着窗体的变化,而发生变化,这样可能导致程序开发变的更繁琐和复杂了。