Hello Qt! 卡诺图开发

windows版本

QT GUI 界面

windows版本下载

根目录下有四个执行文件:

  • 卡诺图.exe 完整程序 (可能由于编码乱码,而且似乎暂时只能在开发电脑上运行)
  • karnaugh /karnaugh22/ karnaugh24/ 单独界面

可能出现问题(在Mac虚拟机上发现的):

  1. 缺少120ddl配置文件:

    将110配置文件复制粘贴一遍,改名为120即可(有两个文件)

    这样之后就可以打开单独程序了

  2. 缺少Qt5Cored.dll, Qt5Guid.dll, QT5Widgetsd.dll文件:(QT库文件)

    缺少MSVCP120D.dll : VS2013开发库文件,

    • 建议尝试单独界面版本, 暂时加载了所有ddl文件集合之后会出现0x7c打开错误
    • ddl文件集合

其它问题请邮件联系我~(右边栏有mail快捷方式)

想体验完整版本…也可以约我要远程协助玩~

主界面

菜单栏

  • 说明: 项目主页, 程序简介
  • 联系作者: 个人主页, 微信, 邮箱
  • 退出程序: 退出

四变量卡诺图演示

初始状态

  1. 点击”T”, 可以更改真值
  2. 点击”A” , “B”, “C”, “D” 可更改真值
  3. 点击”计算” 可模拟卡诺图计算
  4. 注意”计算” 之后当前真值表不会保留,需要点”重置”重新输入
  5. 点击”退出” 退出四变量演示

其它卡诺图

Terminal 界面

从大到小设置步长,然后bfs,调节输出即可

由于一开始没写类,后来改动没有尽善尽美,于是分了三个文件

mac版本下载

windows版本下载

Mac版本预览

mac版本下载

windows版本预览

windows版本下载

辅助作图成果

使用proteus8作图.(二位十六进制计时器)

课程学习笔记

study from this lesson,相关程序请勿用作商业用途

布局

  • 顶级窗口,次级窗口

  • 移动窗口

  • 1
    2
    setGeometry(xpos,ypos,xlen,ylen) // 设置长宽位置,不含标题栏
    move(xpos, ypos) // 带外边框的坐标
  • my_text->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding);

  • sizehint, sizepolicy 觉得布局分配多少空间

  • stretch factor管理拉伸变化的多少.

  • maximum 和 minimum来管理最大拉伸的大小

    事件处理

1
2
3
4
5
6
7
8
9
10
11
12
1. signal
ui.pushbutton->clicked(1);
2. slot
private slots:
int slotfun(bool)
3. connect
constructor:{
connect(obj, //sender
SIGNAL(sigfun(bool)),//signal
this, //reveiver
SLOT(slotfun(bool)));//slot
}
  • 调试qDebug("like printf");

QLabel

stylesheet-> 背景色/前景色

font/alignment

1
value->setStyleSheet(QLatin1String("color: rgb(0, 0, 127);\n""background-color: rgb(255, 255, 255);\n""font: 75 18pt \"Arial\";\n""border-color: rgb(0, 0, 0);"));

移动窗口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

bool isDragged;
QPoint StartPosition;
QPoint FramePosition;

void karnaugh22::mouseMoveEvent(QMouseEvent * event)
{
if (event->buttons() & Qt::LeftButton)
{
if (isDragged)
{
QPoint delta = event->globalPos() - StartPosition;
move(FramePosition + delta);
}
}
}

void karnaugh22::mouseReleaseEvent(QMouseEvent * event)
{
if (event->buttons() & Qt::LeftButton)
{
isDragged = false;
}
}

void karnaugh22::mousePressEvent(QMouseEvent * event)
{
if (event->button() == Qt::LeftButton)
{
isDragged = true;
StartPosition = event->globalPos();
FramePosition = frameGeometry().topLeft();
}
QWidget::mousePressEvent(event);
}

隐藏标题栏&白底

1
2
3
4
5
6
7
8
9
10
11
12
13
setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
setAttribute(Qt::WA_TranslucentBackground);

void karnaugh22::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QRect frameRect = rect();
frameRect.adjust(1, 1, -1, -1);

painter.setPen(QColor(0x66, 0x66, 0x66));
painter.setBrush(QColor(0xFF, 0xFF, 0xFF));
painter.drawRoundRect(frameRect, 2, 2);
}

选择不同类型卡诺图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
connect(ui.rb, SIGNAL(clicked()), this, SLOT(btnC()));
connect(ui.rb_2, SIGNAL(clicked()), this, SLOT(btnC()));
connect(ui.rb_3, SIGNAL(clicked()), this, SLOT(btnC()));


void Kar::btnC()
{
switch (btn->checkedId())
{
case 0:
s = new karnaugh22();
s->show();
qDebug("2 var") ;
break;

case 1:
t = new karnaugh24();
t->show();
qDebug("3 var") ;
break;

case 2:
k = new karnaugh();
k->show();
qDebug("4 var") ;
break;
default:
break;
}
}

打开链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void Kar::mexit()
{
exit(0);
}

void Kar::openMyPage()
{
//qDebug()<<QString("Open Page");
QDesktopServices::openUrl(QUrl(QString("http://renld.cn/")));
}

void Kar::mailTo()
{
QDesktopServices::openUrl(QUrl(QString("mailto:leidar100@gmail ? subject = karnaugh")));

}

void Kar::wechat()
{
QDesktopServices::openUrl(QUrl(QString("http://renld.cn/wechat/")));
}

开发疑难与解决方案

  1. 封装疑难, Xcode无法编译: 暂时用三个文件代替

  2. 缺少xxxxx120dll: 将xxxxx110dll同名文件改名

  3. 腾讯云同名文件更新问题: 改名

  4. Qt(VS)中文类编译问题: 好端端用啥中文类…..

  5. 合并时候想转为QWidget子类: 环境变量问题(因为菜单条) 好好用mainwindow类就行

  6. upload Github更新博客遇上Github崩溃…: 在disqus评论更新(需要翻墙)

文章目录
  1. 1. QT GUI 界面
    1. 1.1. 主界面
    2. 1.2. 四变量卡诺图演示
      1. 1.2.1. 初始状态
    3. 1.3. 其它卡诺图
  2. 2. Terminal 界面
    1. 2.1. Mac版本预览
    2. 2.2. windows版本预览
  3. 3. 辅助作图成果
  4. 4. 课程学习笔记
    1. 4.1. 布局
    2. 4.2. 事件处理
    3. 4.3. QLabel
    4. 4.4. 移动窗口
    5. 4.5. 隐藏标题栏&白底
    6. 4.6. 选择不同类型卡诺图
    7. 4.7. 打开链接
  5. 5. 开发疑难与解决方案