Qt设置窗口的初始大小(使用sizeHint这个虚函数)

我们用qt创建一个窗口,先后显示它,代码如下:

class Mywindow : public QMainWindow
{

.....

}

int main( int argc, char** argv )

{

QApplication app( argc, argv );

Mywindow wind;

wind.show();

return app.exec();
}

发现窗口很小,查看它的方法,以及他的父类widget的方法,发现有个方法像是设置其初始大小的,setBaseSize,调用这个方法

setBaseSize( 800, 600 );

运行程序,发现一点效果都没有。

注意我这里并没有使用setFixedSize  setMaximumSize,因为虽然这些方法能够设置初始大小,但是之后就不能用鼠标调整窗口大小了。

后来baidu发现有人用重载

QSize sizeHint() const

的方式来实现。这个函数是QWidget的一个虚函数。

This property holds the recommended size for the widget.

If the value of this property is an invalid size, no size is recommended.

The default implementation of sizeHint() returns an invalid size if there is no layout for this widget, and returns the layout‘s preferred size otherwise.

virtual QSize sizeHint () const

QSize Mywindow::sizeHint() const
 {
     return QSize( 800, 600 );
 }

这样就可以设置窗口的大小伪800x600了。

后来发现还有一个方法就是  resize。在构造函数中直接调用他设置大小就可以。如:

this->resize( QSize( 800, 600 ));

原文链接:http://blog.csdn.net/zb872676223/article/details/23190017

时间: 2024-10-13 21:16:34

Qt设置窗口的初始大小(使用sizeHint这个虚函数)的相关文章

Qt 设置窗口居中显示和窗体大小

设置窗口居中显示 方法一:在窗口(QWidget类及派生类)的构造函数中添加如下代码: #include <QDesktopWidget> //....... QDesktopWidget* desktop = QApplication::desktop(); // =qApp->desktop();也可以 move((desktop->width() - this->width())/2, (desktop->height() - this->height())

设置窗口的自适应大小

在网页设计时经常遇到需要背景图或者轮播图等情况,为了满足众多用户的不同需求,我们又不能一次性的定死页面的宽和高,所以需要使用一些手段是窗口达到自适应的目的,在今天的开发中,遇到这个问题并找到了解决的方法 <script type="text/javascript"> // 窗口的自适应大小 window.onload = windowHeight; //页面载入完毕执行函数 function windowHeight() { var h = document.documen

QT设置窗口屏幕居中

int main(int argc, char *argv[]){  QApplication ap(argc, argv);  QDesktopWidget *pDesk = QApplication::desktop();  CVxMainWindow wd(pDesk);  wd.show();  wd.move((pDesk->width() - wd.width()) / 2, (pDesk->height() - wd.height()) / 2);   return ap.exe

含有虚函数的类sizeof大小

#include <iostream> using namespace std; class Base1{ virtual void fun1(){} virtual void fun11(){} public: virtual ~Base1(); }; class Base2{ virtual void fun2(){} }; class DerivedFromOne: public Base2 { virtual void fun2(){} virtual void fun22(){} }

Qt图片自适应窗口控件大小(使用setScaledContents)

最近在用Qt设计一个小程序,想让一幅图片自适应窗口大小,由于本人比较笨,一直找不到好方法.找到了很多方法但都会出一些小问题, 刚刚摸索出解决办法了,在些记录. 思想: 1 显示图像是用QLabel2 在QWidget或其他窗口部件上显示(也可直接显示在窗口上,后面会说明为什么不) 现在问题就明朗了,主要就是调整QLabel大小随窗口大小自动变化. 使用方法: 1 在要显示的窗口放置一个QWidget,并使用用布局管理器(以便窗口可以规范布局) 2 在QWidget内放置QLabel ,位置为左上

echarts图表初始大小问题及echarts随窗口变化自适应

最近在做一个轮播图,使用的是element的Carousel走马灯,每一个走马灯里是eachrts图,开始页面加载的时候发现echarts图并不能自适应,开始以为是走马灯的问题,后来发现不是 不知道大家在用echarts的时候有没有遇到这种情况: 最开始盛放图表的容器是隐藏(或者tab切换)的,然后再显示的时候,里面echarts图表就没用初始大小了.比如我遇到的这种: 有童鞋这会儿估计看出原因了:因为元素最初隐藏,再显示之后没有自动变化宽度,所以echarts图表没有初始宽高,官方文档的说法:

Qt 技巧:去除对话框边框 + 设置窗口可移动和透明

1.去除对话框标题栏和边框 在构造函数里设置:    this->setWindowFlags(Qt::FramelessWindowHint); Qt::Dialog     (按照对话框的形式创建窗口--帮助/关闭)Qt::Window  (按照正常窗口的形式创建窗口--最大化/最小化/关闭) 2.窗口可移动 去除边框会造成窗口不可移动,可以通过以下方法来解决: 自定义鼠标按下事件和鼠标移动事件: void yourwindow::mousePressEvent(QMouseEvent *e

SqlSever基础 设置数据库文件与日志文件的初始大小

1 code 1 select from sysdatabases 2 3 drop database helloworld 4 5 create database helloworld 6 7 --设置mdf文件的属性 8 on primary 9 ( 10 name = 'aHelloWorldLogic', --mdf文件的逻辑名字(不是文件名字) 11 filename = 'CUsersAdministratorDesktopaHelloWorld.mdf', --mdf文件的存储路径

Qt 之 设置窗口边框的圆角(使用QSS和PaintEvent两种方法)

Qt在设置窗口边框圆角时有两种方式,一种是设置样式,另一种是在paintEvent事件中绘制窗口.下面分别叙述用这两种方式来实现窗口边框圆角的效果. 一.使用setStyleSheet方法 this->setStyleSheet(“QWidget{border-top-left-radius:15px;border-top-right-radius:5px;}”)); 使用的主要是使用border-radius 属性,关于这个属性,可选的样式有 border-top-left-radius 设置