艰难的Qt学习之路——可视化排序演示
2016-04-18 22:18
543 查看
艰难的Qt学习之路——可视化排序演示
一、目标
对数组使用多种方式排序,可视化展示每一步操作二、版本分析
对10个元素进行冒泡排序对n个元素进行冒泡排序
对n个元素进行多种排序
排序过程中美化样式
三、版本一——对10个元素进行排序
//头文件#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QLabel>
#include <QPushButton>
#include <QGridLayout>
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void sort(); //排序槽函数
private:
QLabel *label[10]; //用标签展示10个数字
QPushButton *button;
QGridLayout *layout; //布局用
};
#endif // WIDGET_H
//主方法
#include "widget.h"
#include <ctime> //产生随机数
#include <cstdlib>
void sleep(unsigned int msec);
Widget::Widget(QWidget *parent) :
QWidget(parent)
{
layout = new QGridLayout(this);
button = new QPushButton("Start", this);
srand((unsigned)time(NULL)); //随机数
for(int i = 0; i < 10; ++i)
{
label[i] = new QLabel(QString::number(rand() % 100), this); //生成随机数,并转换为字符串
label[i]->setMinimumSize(55,0);
label[i]->setAlignment(Qt::AlignCenter);
layout->addWidget(label[i], 0, i);
}
layout->addWidget(button, 1, 5);
this->setLayout(layout);
QObject::connect(button, SIGNAL(clicked(bool)), this, SLOT(sort())); //建立连接
}
Widget::~Widget()
{
}
void Widget::sort()
{
if (button->text() == "Restart") //标题可以变化为开始和重新
{
for(int i = 0; i < 10; ++i)
label[i]->setText(QString::number(rand() % 100));
button->setText("Start");
return;
}
else
{
QString tmp;
for(int i = 0; i < 10 - 1; ++i)
for(int j = 0; j < 10 - i - 1; ++j)
if (label[j]->text().toInt() > label[j + 1]->text().toInt())
{
QFont ft;
ft.setPointSize(24);
label[j]->setFont(ft);
label[j + 1]->setFont(ft); //简单的字体放大
tmp = label[j]->text();
label[j]->setText(label[j + 1]->text());
label[j + 1]->setText(tmp); //交换数值
sleep(1000); //自定义的延时函数
ft.setPointSize(12); //字体的缩小
label[j]->setFont(ft);
label[j + 1]->setFont(ft);
}
button->setText("Restart");
}
}
相关文章推荐
- PyQt5-Beginner-tutorial-part 2
- 基于QT和opencv的摄像头(本地图片)读取并输出程序
- 单片机MQTT实现推送简单使用
- Qt添加窗口背景图片、Label图片显示、、Label文字显示
- 交叉编译安装ARM平台上的Qt
- About QT
- Win7下qt5.3.1+opencv2.4.9编译环境的搭建
- Qt线程(1)
- 关于Qt双缓冲
- 关于QT的系统总结
- Qt 获取窗口的位置和大小
- 点击得到QTableWidget中任意位置QPushButton的行列信息
- 艰难的Qt学习之路——简易加法器
- Qt Model/View/Delegate浅谈 - roleNames()
- qt超强绘图控件qwt - 安装及配置
- Qt-学习笔记(1):vs2015使用qt静态库5.5.1
- QTreeWidget的使用
- QT中常规表达式例子
- Qt学习记录--04 Qt的对话框介绍
- Qt Model/View/Delegate浅谈 - QAbstractListModel