Qt中怎么控制主窗口在屏幕上的显示位置

Qt中怎么控制主窗口在屏幕上的显示位置,第1张

void MainWindow::onBtnMenuMaxClicked(bool)

{

QRect deskTopRect = qApp->desktop()->availableGeometry();

if (max==true) {

int allw = deskTopRectwidth();

int allh = deskTopRectheight();

int unitw=allw/4;

int unith=allh/4;

this->resize(unitw2,unith2);

this->move(unitw,unith);

ui->pushButton_max->setToolTip(tr("最大化"));

}

if (max==false)

{

qDebug()<<"dataRecvSend rectApp= "<<deskTopRect;

this->setGeometry(deskTopRect);

ui->pushButton_max->setToolTip(tr("还原"));

}

max = !max;

}

QWidget如果没有自绘时背景色是透明的,所以看不到。

你可以在QWidget的paintevent函数中绘制背景色,这样就能看到了。

话边框的时候如果是画下边框或右边框要小于width()和height(),不能等于

这里我们一般可以对窗口整体进行布局,我们要用到Layout布局部件。

Layout是一种各种UI都很长用的布局手段,Qt的就很不错,比如说GridLayout,你可以把整个窗体布局一个GridLayout,

然后再往GridLayout里面放控件或者其他布局,这种布局的手段可以随窗体变化而改变布局内的控件的大小,而相对的位置不变。

设置qtablewidget为主窗口的中心部件。

代码设置方式:

setCentralWidget(qwidget的名字)

窗口变化时窗口内的部件依然按照原排列方式铺满窗口,则只需设置窗口如下:

直接为QMainWindow设置一个局部方式即可,水平或垂直布局都可以

使用布局时,在复杂的情况下,需要结合很多的手段才可以达到理想的效果,而且一般使用手写代码更为方便。有几个因素供参考:

1大小提示(size

hint)和最小大小提示(minimum

size

hint)

2大小策略(size

policy)

3伸缩因子(stretch

factor)

4大小约束(size

constraint)

5空白(margin)和间距(spacing)

还有,对于布局而言,对于一个窗口,要达到你说的那个基本目标,首要的就是要设置顶级布局(Top

Level

Layout)。比

如用designer时要注意,

要点中外层的widget然后选layout,

而不是选中若干子控件再选layout,

因为后者的layout和外

如何获得控件在对话框上的坐标是关键问题。编写了如下的测试小程序,目的是将两个picture控件中的点用直线连接起来,比较直观的是picture控件的四个角,所以程序中是将控件的拐角连接起来。首先在对话框上并排放置两个同样大小的picture控件,将他们的标识分别设成IDC_LEFT和IDC_RIGHT,然后添加两个编辑框用于显示picture控件的大小,给这两个编辑框添加相应的数据成员m_row和m_colume。添加一个按钮用于连接picture控件中的点,为这个按钮添加成员函数OnMatch() 。

因为像你第一种写法,

{

mainwindow mai;//在这里声明,Dialog结束后不显示mainwindow

maishow();

}

如你所说的在大括号里面定义mai,mai就是大括号里面的一个局部变量,在大括号执行完毕之后,大括号里面的所有资源被释放mai的生命周期完结因此mai就不存在了因此mai显示不出来

像第二种写法

mainwindow mai;

if(loginwindowexec()==QDialog::Accepted)

{

maishow();

}

在大括号外面定义mai,mai就是main函数里面的变量,因为调用了return aexec(),因此在程序结束之前mai的生命周期都不会结束,就是说mai一直存在所以mai就可以显示出来

为了验证我的说法你可以把return aexec();也放到if(loginwindowexec()==QDialog::Accepted)的大括号里面,这样这个大括号里就一直不会执行完毕(因为有return aexec())因此mai的生命周期就不会结束因此mai可以显示出来

说到底都是生命周期的问题

不过为了程序的严谨新,最好吧 return aexec(); 放到if的大括号中去,不然你会发现就是main函数关闭了程序也不会退出的现象

以上就是关于Qt中怎么控制主窗口在屏幕上的显示位置全部的内容,包括:Qt中怎么控制主窗口在屏幕上的显示位置、QT子类化widget,怎么没法在主窗口显示Mainwindow、QT中控件如何随着窗口大小的改变而使它充满整个窗口空间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9622669.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存