首界面效果如图

界面就比较简单,拖拉几个控件,设置一下样式ok,不得不说QT这个QSS弄的还是可以,虽然明显是抄袭CSS,语法基本一样,但就是香,比微软那MFC好用太多了。

整个界面还增加了一个标题栏,以及窗体圆角边框和阴影效果,具体是实现方式为,定义了一个MDialog类,继承自QDialog,在MDialog里面,实现了圆角边框,阴影效果,使用绘图方式实现的。

新建一个Dialog,只要继承一下MDialog,就可以轻松实现。需要注意的是,ui文件里面也需要修改一下继承类,但是在QTCreater里面无法修改,因此需要用记事本打开ui文件,手动修改继承自MDiaolog类

图的意思就是ui文件需要修改基类

MDialog.h源码

#include <QDialog>
#include "qlabel.h"
#include "qpushbutton.h"
#include "QPoint"
#include <QMouseEvent>class MDialog : public QDialog
{Q_OBJECTpublic:explicit MDialog(QWidget *parent = 0);~MDialog();void show();
protected:virtual void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;//virtual void keyPressEvent(QKeyEvent *ev);void mouseMoveEvent(QMouseEvent* event);//鼠标移动事件void mousePressEvent(QMouseEvent* event);//鼠标按下事件void mouseReleaseEvent(QMouseEvent* event);//鼠标释放事件QPushButton *closeBtn;
private:QWidget * top;QLabel * title;QLabel *ico;//用来显示图标bool isPressed;QPoint old;//原始的点int x_nBorder;//边框QColor x_bgColor;//背景色int x_nRatio;//圆角率void drawBG(QPainter* painter);void drawShadow(QPainter* painter);
public slots:void doClose();void doMin();void doMenu();
public:void hideTitle();void hideMenu();void setTitle(QString title);//设置标题void hideMin();//隐藏最小化void hideClose();//隐藏关闭按钮void hideIcon();//隐藏图标};#endif // MFORM_H

MDialog.cpp源码

#include "mdialog.h"#include "qpainter.h"
#include "QDebug"
#include <qmath.h>
#include <QApplication>
MDialog::MDialog(QWidget *parent) :QDialog(parent)
{//ui->setupUi(this);this->setAttribute(Qt::WA_TranslucentBackground);setWindowFlags(Qt::FramelessWindowHint| Qt::WindowStaysOnTopHint);x_nBorder = 5;x_bgColor = Qt::white;x_nRatio = 5;top=new QWidget(this);top->setStyleSheet("background:#333");top->resize(this->width()-10,40);top->move(x_nBorder,x_nBorder);title=new QLabel(top);title->setText("曲大家远程控制软件");title->setStyleSheet("color:#fff;");QFont ft("黑体",12,1);title->setFont(ft);title->move(40,10);closeBtn=new QPushButton(top);closeBtn->setStyleSheet("QPushButton{border:none;background:#f00 url(:/images/close.png) center no-repeat;}QPushButton::hover{background:#900 url(:/images/close.png) center no-repeat;}");closeBtn->resize(25,25);closeBtn->move(top->width()-32,10);QPixmap map(":/images/tlogo.png");map=map.scaled(24,24);ico=new QLabel(top);ico->setPixmap(map);ico->move(5,5);connect(closeBtn, SIGNAL(clicked()), this, SLOT(doClose()));//连接关闭事件this->setTitle("曲大家远程控制软件");
}MDialog::~MDialog()
{}
void MDialog::show(){setWindowState(Qt::WindowNoState);QDialog::show();}void MDialog::paintEvent(QPaintEvent *event)
{if(this->top!=NULL){//重置标题大小QRect rect = this->rect();top->resize(rect.width()-x_nBorder*2,38);closeBtn->move(top->width()-30,6);}QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing);drawBG(&painter);drawShadow(&painter);QWidget::paintEvent(event);}
void MDialog::drawBG(QPainter* painter)
{painter->save();QBrush brush(x_bgColor);painter->setBrush(brush);painter->setPen(Qt::NoPen);QRect _rect = this->rect();QRect _rectBG = QRect(_rect.x() + x_nBorder, _rect.y() + x_nBorder, _rect.width() - 2 * x_nBorder, _rect.height() - 2 * x_nBorder);painter->drawRoundedRect(_rectBG, x_nRatio, x_nRatio);painter->restore();
}void MDialog::drawShadow(QPainter* painter)
{painter->save();QColor color(0, 0, 0, 0);for (int i = 0; i < x_nBorder; ++i){QPainterPath path;path.setFillRule(Qt::WindingFill);path.addRoundedRect(x_nBorder - i, x_nBorder - i, this->width() - (x_nBorder - i) * 2, this->height() - (x_nBorder - i) * 2, x_nRatio, x_nRatio);color.setAlpha(100 - qSqrt(i) * 50);painter->setPen(color);painter->drawPath(path);}painter->restore();
}
void MDialog::hideTitle(){top->hide();
}
void MDialog::hideMin(){//minBtn->hide();
}
void MDialog::hideIcon(){ico->hide();title->move(10,10);
}
void MDialog::hideMenu(){// menuBtn->close();
}
void MDialog::hideClose(){closeBtn->hide();
}
void MDialog::setTitle(QString title)
{// echo("title="+title);this->setWindowTitle(title);this->title->setText(title);
}
void MDialog::doClose(){QApplication::exit();
}
void MDialog::doMenu(){}
void MDialog::doMin(){setWindowState(Qt::WindowMinimized);
}
void MDialog::mousePressEvent(QMouseEvent* event)
{if(event->button() == Qt::LeftButton && event->y()<=40){isPressed = true;old = event->globalPos();}
}void MDialog::mouseMoveEvent(QMouseEvent* event)
{if(isPressed && event->buttons().testFlag(Qt::LeftButton)){this->move(this->pos() + (event->globalPos() - old));old = event->globalPos();}
}void MDialog::mouseReleaseEvent(QMouseEvent* event)
{if(event->button() == Qt::LeftButton){isPressed = false;}
}

使用java和qt开发远程控制系统-主界面设计相关推荐

  1. 嵌入式系统开发笔记80:应用Qt Designer进行主界面设计

    前言   本篇文章讲解PyQt的基本使用方法,我们将应用Qt Designer来设计一个主界面,学习完本篇文章的内容后,你将获得如下技能.   (1)在VS Code中启动Qt Designer    ...

  2. Ext JS 6开发实例(三) :主界面设计

    在上文中,已经将CMD创建的应用程序导入到项目里了,而且也看到默认的主界面了,今天的主要工作就是修改这个主界面,以符合项目的需要.除了设计主界面,还有一些其他的东西需要配置一下. 添加本地化包 打开a ...

  3. 基于C#的AE二次开发之主界面设计

    上篇文章介绍了AE的安装与配置,下面介绍在VS2012中AE的简单主界面设计方法. 一.项目创建 1.打开VS2012建立项目 在打开界面后,点击新建项目,在弹出的界面中选择Visual C#--Ar ...

  4. Android Studio 开发–微信APP门户界面设计

    Android Studio 开发–微信APP门户界面设计 本次Github代码仓库 --crcr1013/MyWechat 文章目录 Android Studio 开发--微信APP门户界面设计 前 ...

  5. emWin智能家居主界面设计,含uCOS-III和FreeRTOS两个版本

    第6期:智能家居主界面设计 配套例子: V6-910_STemWin提高篇实验_智能家居主界面设计(uCOS-III) V6-911_STemWin提高篇实验_智能家居主界面设计(FreeRTOS) ...

  6. java计算器如何实现运算_用java编写了一个模拟计算器的界面设计,怎么实现运算功能呢...

    用java编写了一个模拟计算器的界面设计,怎么实现运算功能呢 2020 - 9 - 16 TAG : view sourceprint?import java.awt.BorderLayout; im ...

  7. C++/QT 贪吃蛇小游戏 界面设计

    C++/QT 贪吃蛇小游戏 界面设计 前言:本文所写的贪吃蛇是笔者初学QT练手的小项目,做出来的界面较为粗糙.由于很久没有接触C++,程序中类封装的不是很规范.写这篇文章,权当是记录生活了,手动狗头. ...

  8. 【2022/8/27】Qt自制C语言IDE——界面设计

    [2022/8/27]Qt自制C语言IDE--界面设计 整体思路 技术问题 添加资源文件之后无法显示 Tab Widget 的Tab的样式无法通过UI设计界面调节 UI设计界面里面调整Layout中各 ...

  9. [仿南航app开发日记2]主界面完成

    效果 先来看看主界面完成的效果: 这是主界面的样子,如果要参照原app是什么样子的可以参照我的上一篇博客: http://blog.csdn.net/supervictim/article/detai ...

最新文章

  1. Chrome 被曝 0day 漏洞,可让黑客获取用户数据
  2. 添加面部跟踪和实时识别到您的Android应用程序
  3. 【翻译】WPF中的数据绑定表达式
  4. 点击率预测的贝叶斯平滑
  5. python logger日志级别_python干货分享:使用logging记录日志信息
  6. 【动态规划】LeetCode 1143最长公共子序列
  7. wdcp如何修改phpmyadmin导入 最大限制2048 KB
  8. 小米蓝牙音箱驱动_新品频发,小米 Air2 SE真无线蓝牙耳机即将开售
  9. chrome浏览器版本和driver版本对照表
  10. 程序设计课程设计——学生学籍管理系统
  11. 2022最受欢迎开源免费CMS建站系统排行榜
  12. shopex mysql索引_shopex数据库访问
  13. 每日AC-小米笔试 风口的猪-中国牛市
  14. ffmpeg将图片和mp3合并成mp4
  15. hive时间AM PM格式转化为24小时制 按小时分morning,noon 思路+演示
  16. MS17-010(永恒之蓝)漏洞复现和分析
  17. iOS关于图片点到像素转换之杂谈
  18. 计算机学报在线阅读,含指针程序的单子切片方法-计算机学报.pdf
  19. echarts地图导航飞线与层级穿透
  20. Web服务器与Web容器的概念

热门文章

  1. 云计算之服务器虚拟化技术
  2. 使用Arduino进行磁场强度测量
  3. 国际期货黄金手续费怎么算?
  4. 使用windows优化大师清理垃圾文件后,windows2008乱码的问题。
  5. [08001] Could not create connection to database server. Attempted reconnect 3 times.
  6. [18调剂]中国农业大学信电学院2018年硕士研究生招生复试时间及接收调剂生的通知...
  7. Ubuntu16.04下安装VS Code
  8. MATLAB产生雷达脉冲信号,一些有关雷达的程序 另外求有关单脉冲雷达信号产生的程序...
  9. 微信小程序多项选择器_微信小程序——多列选择器picker组件
  10. JS实现单张图片闪烁效果