QT GUI 界面
windows版本下载
根目录下有四个执行文件:
- 卡诺图.exe 完整程序 (可能由于编码乱码,而且似乎暂时只能在开发电脑上运行)
- karnaugh /karnaugh22/ karnaugh24/ 单独界面
可能出现问题(在Mac虚拟机上发现的):
缺少120ddl配置文件:
将110配置文件复制粘贴一遍,改名为120即可(有两个文件)
这样之后就可以打开单独程序了
缺少Qt5Cored.dll, Qt5Guid.dll, QT5Widgetsd.dll文件:(QT库文件)
缺少MSVCP120D.dll : VS2013开发库文件,
- 建议尝试单独界面版本, 暂时加载了所有ddl文件集合之后会出现0x7c打开错误
- ddl文件集合
其它问题请邮件联系我~(右边栏有mail快捷方式)
想体验完整版本…也可以约我要远程协助玩~
主界面
菜单栏
- 说明: 项目主页, 程序简介
- 联系作者: 个人主页, 微信, 邮箱
- 退出程序: 退出
四变量卡诺图演示
初始状态
- 点击”T”, 可以更改真值
- 点击”A” , “B”, “C”, “D” 可更改真值
- 点击”计算” 可模拟卡诺图计算
- 注意”计算” 之后当前真值表不会保留,需要点”重置”重新输入
- 点击”退出” 退出四变量演示
其它卡诺图
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 }
|
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() { 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/"))); }
|
开发疑难与解决方案
封装疑难, Xcode无法编译: 暂时用三个文件代替
缺少xxxxx120dll
: 将xxxxx110dll
同名文件改名
腾讯云同名文件更新问题: 改名
Qt(VS)中文类编译问题: 好端端用啥中文类…..
合并时候想转为QWidget子类: 环境变量问题(因为菜单条) 好好用mainwindow类就行
upload Github更新博客遇上Github崩溃…: 在disqus评论更新(需要翻墙)