代码化UI设计
最近在阅读Qt 5.9 C++开发指南,为了加深对书本上内容的理解,参照书上的讲解尝试写了一些demo,用于以后工作中查阅,如果涉及侵权请告知,实例程序samp2_3
mydialog.h
#ifndef MYDIALOG_H
#define MYDIALOG_H #include <QDialog>
#include <QCheckBox>
#include <QRadioButton>
#include <QPlainTextEdit>
#include <QPushButton>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QFont>
#include <QPalette> class MyDialog : public QDialog
{
Q_OBJECT private:
QCheckBox *underlineCheckBox;
QCheckBox *italicCheckBox;
QCheckBox *boldCheckBox;
QRadioButton *blackRadioButton;
QRadioButton *redRadioButton;
QRadioButton *blueRadioButton;
QPlainTextEdit *plainTextEdit;
QPushButton *okPushButton;
QPushButton *cancelPushButton;
QPushButton *closePushButton; public:
MyDialog(QWidget *parent = nullptr);
~MyDialog();
void iniUI();
void iniSignalSlots(); public slots:
void onUnderlineCheckBox(bool checked);
void onItalicCheckBox(bool checked);
void onBoldCheckBox(bool checked);
void setTextFontColor();
void onOkPushButton();
void onCancelPushButton();
}; #endif // MYDIALOG_H
mydialog.cpp
#include "mydialog.h" MyDialog::MyDialog(QWidget *parent) : QDialog(parent)
{
iniUI();
iniSignalSlots();
} MyDialog::~MyDialog()
{ } /*
* 初始化界面
*/
void MyDialog::iniUI()
{
// 初始化三个复选框
underlineCheckBox = new QCheckBox(tr("Underline"));
italicCheckBox = new QCheckBox(tr("Italic"));
boldCheckBox = new QCheckBox(tr("Bold")); // 将三个复选框放在一个水平布局内
QHBoxLayout *hlayout1 = new QHBoxLayout();
hlayout1->addWidget(underlineCheckBox);
hlayout1->addWidget(italicCheckBox);
hlayout1->addWidget(boldCheckBox); // 初始化三个单选按钮
blackRadioButton = new QRadioButton(tr("Black"));
blackRadioButton->setChecked(true);
redRadioButton = new QRadioButton(tr("Red"));
blueRadioButton = new QRadioButton(tr("Blue")); // 将三个单选按钮放在一个水平布局内
QHBoxLayout *hlayout2 = new QHBoxLayout();
hlayout2->addWidget(blackRadioButton);
hlayout2->addWidget(redRadioButton);
hlayout2->addWidget(blueRadioButton); // 初始化文本框
plainTextEdit = new QPlainTextEdit(); // 初始化三个按钮
okPushButton = new QPushButton(tr("确定"));
cancelPushButton = new QPushButton(tr("取消"));
closePushButton = new QPushButton(tr("退出")); // 将三个按钮放在一个水平布局内
QHBoxLayout *hlayout3 = new QHBoxLayout();
hlayout3->addWidget(okPushButton);
hlayout3->addWidget(cancelPushButton);
hlayout3->addWidget(closePushButton); // 将三个水平布局放在一个垂直布局内,并设置为窗口整体布局
QVBoxLayout *vlayout = new QVBoxLayout();
vlayout->addLayout(hlayout1);
vlayout->addLayout(hlayout2);
vlayout->addWidget(plainTextEdit);
vlayout->addLayout(hlayout3);
setLayout(vlayout); resize(,);
} /*
* 初始化信号与槽
*/
void MyDialog::iniSignalSlots()
{
// 处理三个复选框
connect(underlineCheckBox, SIGNAL(clicked(bool)), this, SLOT(onUnderlineCheckBox(bool)));
connect(italicCheckBox, SIGNAL(clicked(bool)), this, SLOT(onItalicCheckBox(bool)));
connect(boldCheckBox, SIGNAL(clicked(bool)), this, SLOT(onBoldCheckBox(bool))); // 处理三个单选按钮
connect(blackRadioButton, SIGNAL(clicked()), this, SLOT(setTextFontColor()));
connect(redRadioButton, SIGNAL(clicked()), this, SLOT(setTextFontColor()));
connect(blueRadioButton, SIGNAL(clicked()), this, SLOT(setTextFontColor())); // 处理三个普通按钮
connect(okPushButton, SIGNAL(clicked()), this, SLOT(onOkPushButton()));
connect(cancelPushButton, SIGNAL(clicked()), this, SLOT(onCancelPushButton()));
connect(closePushButton, SIGNAL(clicked()), this, SLOT(close()));
} /*
* 当用户点击下划线复选框的槽函数
*/
void MyDialog::onUnderlineCheckBox(bool checked)
{
QFont font = plainTextEdit->font();
font.setUnderline(checked);
plainTextEdit->setFont(font);
} /*
* 当用户点击斜体复选框的槽函数
*/
void MyDialog::onItalicCheckBox(bool checked)
{
QFont font = plainTextEdit->font();
font.setItalic(checked);
plainTextEdit->setFont(font);
} /*
* 当用户点击加粗复选框的槽函数
*/
void MyDialog::onBoldCheckBox(bool checked)
{
QFont font = plainTextEdit->font();
font.setBold(checked);
plainTextEdit->setFont(font);
} /*
* 当用户点击单选按钮的槽函数
*/
void MyDialog::setTextFontColor()
{
if(blackRadioButton->isChecked())
{
QPalette pa;
pa.setColor(QPalette::Text, Qt::black);
plainTextEdit->setPalette(pa);
}
else if(redRadioButton->isChecked())
{
QPalette pa;
pa.setColor(QPalette::Text, Qt::red);
plainTextEdit->setPalette(pa);
}
else
{
QPalette pa;
pa.setColor(QPalette::Text, Qt::blue);
plainTextEdit->setPalette(pa);
}
} /*
* 当用户点击确定按钮的槽函数
*/
void MyDialog::onOkPushButton()
{
underlineCheckBox->setEnabled(false);
italicCheckBox->setEnabled(false);
boldCheckBox->setEnabled(false);
blackRadioButton->setEnabled(false);
redRadioButton->setEnabled(false);
blueRadioButton->setEnabled(false);
plainTextEdit->setEnabled(false);
okPushButton->setEnabled(false);
} /*
* 当用户点击取消按钮的槽函数
*/
void MyDialog::onCancelPushButton()
{
underlineCheckBox->setEnabled(true);
italicCheckBox->setEnabled(true);
boldCheckBox->setEnabled(true);
blackRadioButton->setEnabled(true);
redRadioButton->setEnabled(true);
blueRadioButton->setEnabled(true);
plainTextEdit->setEnabled(true);
okPushButton->setEnabled(true); underlineCheckBox->setChecked(false);
italicCheckBox->setChecked(false);
boldCheckBox->setChecked(false);
blackRadioButton->setChecked(true);
redRadioButton->setChecked(false);
blueRadioButton->setChecked(false); onUnderlineCheckBox(false);
onItalicCheckBox(false);
onBoldCheckBox(false);
setTextFontColor();
}
main.cpp
#include "mydialog.h"
#include <QApplication> int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyDialog w;
w.show(); return a.exec();
}
效果展示

代码化UI设计的更多相关文章
- 缩放因子和UI设计
一.PPI 1.像素密度PPI:PPI(Pixel Per Inch by diagonal):表示沿着对角线,每英寸所拥有的像素(Pixel)数目. 根据勾股定理(直角三角形两边为a和b,斜边为c, ...
- Android 腾讯入门教程( 智能手表UI设计 和 MVC模式 )
*****注意到mvc 在android 中是如何进行分层分域执行各自的功能.**** 官方推荐的按钮尺寸是48像素 前端之Android入门(1):环境配置 前端之Android入门(2):程序目录 ...
- eclipse里打开SWT项目找不到source/design的图形UI设计界面
因为前天重新装了个新版的eclipse, 结果今天打开一个SWT的项目,突然找不到source/design的图形UI设计的两个切换按钮 我把SWT组件重新装了还是找不到.结果后来发现是因为重装ecl ...
- 分享20个最新的免费 UI 设计素材给设计师
用户界面设计涉及到很多的创意,灵感以及需要与客户进行有效沟通的技能.良好的用户界面是一致的,可以使网站更容易理解和使用.UI设计的重点在于用户体验和互动,同时易于使用对于一个成功的移动应用程序来说非常 ...
- UI设计中的48dp定律【转】
有朋友建议我偶尔写写技术类的文章,所以我打算开始穿插性的写一些偏技术方面的科普文章,尽量往小白能看懂的方向写,今天我来讲讲UI设计中的48dp定律. 那么先说说什么是dp ?其实对于一个非技术人员要把 ...
- 2017年8个UI设计流行趋势
设计趋势变化的理由需要考虑各种各样的因素.让我们来一起看看2017年的设计流行趋势吧. 应用界面的设计趋势是不断变化的.随着时间的推移他也在不断的成长,进化.虽然有些趋势还有待检验,但我们还是需要不断 ...
- 浅谈UI设计中妙用无穷的深色系背景
英文:medium 译者:优设网 - 陈子木 链接:http://www.uisdc.com/ui-benefits-of-dark-background# --------------------- ...
- MAC OS UI设计
对比MAC OS 10.9到10.11的UI设计,苹果曾经卓尔不群的审美观逐步变得泯然众人. 当苹果也跟上扁平化的浪潮,许多搞设计的朋友都一时难以接受,曾经潮流的引领者变成了亦步亦趋的跟随者. MAC ...
- APP UI设计及切图规范
APP UI设计及切图规范 1.概述 1.1 编写目的 该文档主要针对移动端开发的视觉设计和开发过程中的工作环节做统一的规划规范,是系统进入UI设计的前置文档.部分内容来自网络收集修编,转载请注明由 ...
随机推荐
- HTML相关知识点(3)
文档流: 浮动:用于布局 给三个浮动的盒子加上一个父元素并设置宽高,以免影响其他的盒子和内容 margin:0 auto;居中 在盒子里插入图片: 1.为父元素设置宽高,给图片设置宽100%,图片会充 ...
- 解决css中display:inline-block的兼容问题
*display:inline; *zoom:1; 不多说,ie6/7直接在元素添加以上的属性即可.
- 无法通过128在表空间temp中扩展temp字段
truncate 表后在执行,这个原因是数据太大了
- 5.3 Nginx 动静分离
Server 脚本片段 server { listen ; server_name ccserver1; #charset koi8-r; access_log logs/host.access.lo ...
- Python 开篇
一.Linux基础 - 计算机以及日后我们开发的程序防止的服务器的简单操作 二.Python开发 http://www.cnblogs.com/wupeiqi/articles/5433893.htm ...
- 白手起家Django项目发布上篇_linux centos 环境部署
在项目发布之前,首先准备好我们编写好的Django项目,这个我们在之后博客有写,大家可以去看, 首先,先开始安装linux服务器,作为Django项目的发布服务器.以Vmware虚拟机为例子,大家也可 ...
- P1090 危险品装箱
1090 危险品装箱 (25分) 集装箱运输货物时,我们必须特别小心,不能把不相容的货物装在一只箱子里.比如氧化剂绝对不能跟易燃液体同箱,否则很容易造成爆炸. 本题给定一张不相容物品的清单,需要你 ...
- LInux的服务器编码格式的查看与更改
1.locale 命令查看字符编码 然后修改/etc/sysconfig/i18n,如改成中文编码: LANG=en_US.UTF-8 改为 LANG="zh_CN.GBK" 然后 ...
- docker学习笔记-01:docker基本原理
一.docker原理 1.什么是docker:解决了运行环境和配置问题的容器,方便做持续集成并有助于整体发布的容器虚拟化技术. 2.虚拟机的缺点:(1)资源占用多:(2)冗余步骤多:(3)启动慢,分钟 ...
- 清北学堂模拟赛2 T2 ball
题目大意: 多组数据,每组给定n,m,表示将n个小球放进m个箱子,每个小球均有两个箱子(可能相同)可放,求所有小球均放好的方案mod998244353的总数. 思路: 算是我和题解思路肥肠相近的一道题 ...