Qt项目开发遇到的问题2:初始界面的设计问题(无边框的页面等)
1.基础的知识:
固定窗口大小
resize(1400,900);
设置使主界面最小尺寸为1200*400;保证窗口的美观
ui->centralWidget->setMinimumSize(1200,400);
无边框设计:
有了这一条之后就可以实现窗口的放大和缩小了,把鼠标放在窗口边,就能使之改变大小,这个比较方便快捷,其他方法我找了很多但都不算太好
setWindowFlags( Qt::CustomizeWindowHint);
由于没有了边框,我们手动添加按钮,添加关闭,最小化,最大化按钮:
//关闭窗口
connect(ui->closebtn,&QPushButton::clicked,this,&MainWindow::close);
//最小化
connect(ui->minbtn,&QPushButton::clicked,this,&MainWindow::showMinimized);
//最大化,再次点击恢复窗口大小
connect(ui->maxbtn,&QPushButton::clicked,this,[&](){
if(minandmax==0)
{
connect(ui->maxbtn,&QPushButton::clicked,this,&MainWindow::showMaximized);
minandmax = 1;
}
else
{
connect(ui->maxbtn,&QPushButton::clicked,this,&MainWindow::showNormal);
minandmax = 0;
}
});
2.然后是添加背景图片,这里有个问题,就是如何让背景图片自适应显示:
//设置背景图片自适应
void MainWindow::setBackgroundImage(QPixmap &pixmap)
{
//判断图片是否为空
if(pixmap.isNull()){
return;
}
//设置窗口的背景
QPalette palette = this->palette();
palette.setBrush(this->backgroundRole(),
QBrush(pixmap.scaled(this->size(),
Qt::IgnoreAspectRatio,
Qt::SmoothTransformation)));
this->setPalette(palette);
}
3.这里就是鼠标坐标的一些方法,可以方便的找到坐标位置
//鼠标点击事件
void MainWindow::mousePressEvent(QMouseEvent *event)
{
//读取坐鼠标点击坐标点
m_lastPoint = event->globalPos();
}
//鼠标移动事件
void MainWindow::mouseMoveEvent(QMouseEvent *event)
{
//把移动的点记录下来
int dx = event->globalX() - m_lastPoint.x();
int dy = event->globalY() - m_lastPoint.y();
m_lastPoint = event->globalPos(); //更新记录点
move(x() + dx, y() + dy); //窗口移动到此处
}
void MainWindow::mouseReleaseEvent(QMouseEvent *event)
{
//记录移动到的坐标
int dx = event->globalX() - m_lastPoint.x();
int dy = event->globalY() - m_lastPoint.y();
move(x() + dx, y() + dy);
}
这一篇就这么多吧,下一篇说一下核心的内容,如何加载模块;也就是加载dll文件。

浙公网安备 33010602011771号