开学有课设的要求,大家都一顿网上源码download,有的出钱买,但是下载的有的调试不好,或者做的太牛批了不敢用,为了温习一下Qt,自己亲手写了一个,幸亏老师比较仁慈,作品比较low但也过了,在此做一下课设的总结。
一、编程语言
做数据库的可视化的话,很多语言都能做,我们的课程要求是JDBC,也就是java数据库,但是大多数的老师应该都允许使用自己熟悉或者喜欢的语言。
我周围的人课设用的语言如下:
- Java
- Qt
- Python
1、java
Java做图形界面的话无疑需要使用swing,一个比较好的插件是windowbuilder,需要的可以自行安装,效果就是可以自行拖拽按钮等控件来对图形界面进行设计:
2、Qt
Qt是基于C++语言进行开发的,使用MinGW进行编译运行的,Qt 的项目有ui文件,也可以直接对需要使用的容器和控件等进行拖拽来进行图形界面的设计:
3、Python
Python图形界面可以使用pyQt,为什么叫pyqt呢,因为使用的模式和机制和qt的完全一样,应该说是用Python语言来实现Qt,需要安装模块pyqt5和pyqt5-tools,pyqt5-tools里面有designer可以对图形界面进行设计:
Qt和Java我都试过,但是作为以前使用c++比较多的情况下,感觉Qt更好用一点,也有朋友说Java难用,具体怎样可以去试试,总有一款适合自己。
二、作品效果
上传限制5M。。。弄了两个gif
三、遇到的问题及解决办法
1、去边框
做了一个登陆界面,但是一般的界面框都是有边框的,下面是一个最简单的界面:
想要的效果是把这个边框去掉,这样就变成了两个问题:
- 去边框
- 界面的拖拽移动(因为想要用鼠标移动界面需要拖动边框,去边框之后设置成无论拖拽哪里都可以移动界面)
解决方案:
//所需要的头文件要include
#include <QMouseEvent>
-------------------------------------------------------------------
//去边框
setWindowFlags(Qt::FramelessWindowHint);
//setAttribute(Qt::WA_TranslucentBackground);//背景透明 这个用不到,不用透明
//拖拽:
void Widget::mouseMoveEvent(QMouseEvent *event)
{
if (m_bPressed)
move(event->pos() - m_point + pos());
}
void Widget::mouseReleaseEvent(QMouseEvent *event)
{
Q_UNUSED(event);
m_bPressed = false;
}
void Widget::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
{
m_bPressed = true;
m_point = event->pos();
}
}
2、窗口背景
用label也应该可以实现,但是label需要在最底层,而且上层控件的背景色都要是透明的,不是太方便,实现办法:
//需要的头文件
#include<QPalette>
#include <QPixmap>