技术标签: 文档 C++ 对象 qt 学习记录之Qt篇 管理
头文件:
mianwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTableWidget>
#include <QTreeWidget>
#include <QComboBox>
#include <QLineEdit>
#include <QStringList>
#include <QTableWidgetItem>
#include <QTreeWidgetItem>
#include <QAction>
#include "student.h"
#include "teacher.h"
#include "collage.h"
#include "university.h"
#include "newcollagedialog.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
void DataInit();
void TreeInit();
void creatAction();
private:
Ui::MainWindow *ui;
University *u;
QAction *m_add;
QAction *m_del;
private slots:
void onItemClicked(QTreeWidgetItem*item, int index);
void customContextMenuRequested(QPoint pos);
void OnCollageAdd();
};
#endif // MAINWINDOW_H
Person.h
#ifndef PERSON_H
#define PERSON_H
#include <iostream>
#include <string>
class Person
{
public:
Person();
~Person();
Person(const Person &other);
Person& operator= (const Person &other);
Person(const int Age,const int Height,const std::string Name);
virtual void ShowInfo();
public:
void setAge(const int &Age);
void setHeight(const int &Height);
void setName(const std::string &Name);
const int& Age()const;
const int& Height()const;
const std::string &Name()const;
private:
int age;
int height;
std::string name;
};
#endif // PERSON_H
Student.h
#ifndef STUDENT_H
#define STUDENT_H
#include "person.h"
#include <iostream>
using namespace std;
class Student:public Person
{
public:
Student();
~Student();
public:
Student(const string Sid,const int sAge,
const int sHeight,string sName);
friend std::ostream &operator <<(ostream &os,const Student &s);
void ShowInfo()const;
Student& operator= (const Student &s);
bool CompareSid(const string &sid);
string &StudentSid();
bool setStudentName(const string &name);
private:
string SID;
};
#endif // STUDENT_H
Teacher.h
#ifndef TEACHER_H
#define TEACHER_H
#include "person.h"
class Teacher:public Person
{
public:
Teacher();
~Teacher();
void ShowInfo();
std::string &TeacherID();
Teacher(const std::string tid,const int age,
const int height,const std::string name);
private:
std::string TID;
};
#endif // TEACHER_H
Collage.h
#ifndef COLLAGE_H
#define COLLAGE_H
#include "student.h"
#include "teacher.h"
#include <list>
class Collage:public Teacher,public Student
{
public:
Collage();
~Collage();
Collage(string Cid, string Cname);
public:
bool StudentAdd(Student* s);
void StudentDel(const string &sid);
Student *StudentInfo(const string &sid)const;
void ShowStudentList()const;
bool CompareCid(const string &CID)const;
string &CollageCid();
bool TeacherAdd(Teacher* t);
void StudentRemove(const string &tid);
Teacher *TeacherInfo(const string &tid);
public:
const string &getCid()const;
const string &getCname()const;
const void ShowInfo()const;
std::list<Student*>& sList();
private:
string cid;
string cname;
list<Student *> s_list;
list<Teacher *> t_list;
};
#endif // COLLAGE_H
University.h
#ifndef UNIVERSITY_H
#define UNIVERSITY_H
#include "collage.h"
class University:public Collage
{
public:
University();
University(const string &uid,
const string &uname,
const string &uaddr);
static University *CreatUniversity(const string &uid,
const string &uname,
const string &uaddr)
{
if(nullptr == unty)
{
unty = new University(uid,uname,uaddr);
}
return unty;
}
~University();
public:
const void ShowInfo()const;
bool CollageAdd(Collage *c);
void CollageDel(const string &cid);
Collage *CollageInfo(const string &id) const;
const string& uName()const;
list<Collage*>& cList();
private:
string m_uid;
string m_uname;
string m_uaddr;
list<Collage *> m_list;
static University *unty;
};
#endif // UNIVERSITY_H
源文件:
person.cpp
#include "person.h"
#include "student.h"
Person::Person()
{
}
Person::~Person()
{
}
Person::Person(const Person &other)
{
this->age = other.age;
this->height = other.height;
this->name = other.name;
}
Person &Person::operator=(const Person &other)
{
if(this == &other)
{
return *this;
}
this->age = other.age;
this->height = other.height;
this->name = other.name;
return *this;
}
Person::Person(const int Age, const int Height, const std::string Name)
{
this->age = Age;
this->height = Height;
this->name = Name;
}
void Person::ShowInfo()
{
std::cout << this->age << " " << this->height << " " << this->name << std::endl;
}
void Person::setAge(const int &Age)
{
this->age = Age;
}
void Person::setHeight(const int &Height)
{
this->height = Height;
}
void Person::setName(const std::string &Name)
{
this->name = Name;
}
const int& Person::Age() const
{
return (this->age);
}
const int& Person::Height() const
{
return (this->height);
}
const string& Person::Name() const
{
return (this->name);
}
student.cpp
#include "student.h"
Student::Student()
{
}
Student::~Student()
{
}
Student::Student(const string Sid, const int sAge,
const int sHeight, string sName):SID(Sid),Person(sAge,sHeight,sName)
{
//this->SID = Sid;
}
ostream &operator <<(ostream &os,const Student &s)
{
os << s.SID << " " << s.Age() << " "
<<s.Height() << " " <<s.Name()<<endl;
return os;
}
void Student::ShowInfo()const
{
cout << this->SID << " " << this->Age()<< " "
<< this->Height() << " " << this->Name() << endl;
}
Student& Student::operator=(const Student &s)
{
if(this == &s)
{
return *this;
}
else
{
this->SID = s.SID;
this->setAge(s.Age());
this->setHeight(s.Height());
this->setName(s.Name());
}
return *this;
}
bool Student::CompareSid(const string &sid)
{
if(sid == SID)
{
return true;
}
else
{
return false;
}
}
string &Student::StudentSid()
{
return this->SID;
}
bool Student::setStudentName(const string &name)
{
this->setName(name);
return true;
}
teacher.cpp
#include "teacher.h"
Teacher::Teacher()
{
}
Teacher::~Teacher()
{
}
Teacher::Teacher(const std::string tid, const int age,
const int height, const std::string name):TID(tid),Person(age,height,name)
{
// this->TID = tid;
}
void Teacher::ShowInfo()
{
std::cout << this->TID << " " << this->Age() << " "
<< this->Height() << " " << this->Name() << std::endl;
}
std::string &Teacher::TeacherID()
{
return this->TID;
}
collage.cpp
#include "collage.h"
#include "student.h"
Collage::Collage()
{
// s_list.clear();
// t_list.clear();
}
Collage::~Collage()
{
}
Collage::Collage(string Cid, string Cname):cid(Cid),cname(Cname)
{
// this->cid = Cid;
// this->cname = Cname;
}
bool Collage::StudentAdd(Student *s)
{
if(nullptr != s)
{
s_list.push_back(s);
return true;
}
else
{
return false;
}
}
void Collage::StudentDel(const string &sid)
{
list<Student *>::iterator iter;
for(iter = s_list.begin();iter != s_list.end();++iter)
{
if((*iter)->CompareSid(sid))
{
s_list.erase(iter);
break;
}
}
}
Student *Collage::StudentInfo(const string &sid) const
{
list<Student *>::const_iterator iter;
for(iter = s_list.begin(); iter != s_list.end();++iter)
{
Student* vaule = *iter;
if(vaule->StudentSid() == sid)
{
vaule->ShowInfo();
break;
}
// else
// {
// cout << "NO,Find!" << endl;
// }
}
return 0;
}
void Collage::ShowStudentList() const
{
list<Student *>::const_iterator iter;
for(iter = s_list.begin(); iter != s_list.end();++iter)
{
(*iter)->ShowInfo();
}
}
bool Collage::CompareCid(const string &CID) const
{
if(this->cid == CID)
{
return true;
}
else
{
return false;
}
}
string &Collage::CollageCid()
{
return this->cid;
}
bool Collage::TeacherAdd(Teacher* t)
{
if(nullptr != t)
{
t_list.push_back(t);
return true;
}
else
{
return false;
}
}
void Collage::StudentRemove(const string &tid)
{
list<Student *>::iterator iter;
for(iter = s_list.begin();iter != s_list.end();iter++)
{
if((*iter)->CompareSid(tid))
{
s_list.remove(*iter);
break;
}
}
}
Teacher *Collage::TeacherInfo(const string &tid)
{
list<Teacher *>::iterator iter;
for(iter = t_list.begin(); iter != t_list.end();iter++)
{
Teacher* vaule = *iter;
if(vaule->TeacherID() == tid)
{
vaule->ShowInfo();
break;
}
else
{
cout << "NO,Find!" << endl;
}
}
return 0;
}
const string &Collage::getCid() const
{
return cid;
}
const string &Collage::getCname() const
{
return cname;
}
const void Collage::ShowInfo() const
{
cout << this->cid << " " << this->cname << endl;
}
list<Student *> &Collage::sList()
{
return s_list;
}
university.cpp
#include "university.h"
University::University(const string &uid,
const string &uname,
const string &uaddr)
:m_uid(uid),m_uname(uname),m_uaddr(uaddr)
{
}
University::~University()
{
}
const void University::ShowInfo() const
{
cout << this->m_uid << " "
<< this->m_uaddr << " "
<< this->m_uname << endl;
}
bool University::CollageAdd(Collage *c)
{
if(nullptr != c)
{
m_list.push_back(c);
return true;
}
else
{
return false;
}
}
void University::CollageDel(const string &cid)
{
list<Collage *>::iterator iter;
for(iter = m_list.begin();iter != m_list.end();++iter)
{
if((*iter)->CompareCid(cid))
{
m_list.remove(*iter);
break;
}
}
}
Collage *University::CollageInfo(const string &id)const
{
list<Collage *>::const_iterator iter;
// Collage *p = new Collage;
for(iter = m_list.begin();iter != m_list.end();++iter)
{
if((*iter)->CompareCid(id))
{
// cout << "haveing"<<endl;
// cout << p->getCid() << p->getCname() <<endl;
return *iter;
}
}
return 0;
}
const string &University::uName() const
{
return m_uname;
}
std::list<Collage *> &University::cList()
{
return m_list;
}
University*University:: unty = NULL;
mianwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <iostream>
using namespace std;
void MainWindow::DataInit()
{
Student *s1 = new Student("201601",16,169,"zhangsan");
Student *s2 = new Student("201602",17,168,"zhangtwo");
Student *s3 = new Student("201603",15,178,"zhangthr");
Student *s4 = new Student("201604",18,188,"zhangfou");
Collage *c0 = new Collage("c0001", "XX学院");
Collage *c1 = new Collage("c0002", "OO学院");
c0->StudentAdd(s1);
c0->StudentAdd(s2);
c0->StudentAdd(s3);
c0->StudentAdd(s4);
c1->StudentAdd(s2);
c1->StudentAdd(s3);
QTreeWidgetItem *txt = new QTreeWidgetItem;
txt->setText(0,"University");
ui->treeWidget->setHeaderItem(txt);
u = University::CreatUniversity("u0001",
"电子科大", "moziqiao");
u->CollageAdd(c0);
u->CollageAdd(c1);
}
void MainWindow::TreeInit()
{
ui->treeWidget->clear();
QString str = QString::fromStdString(u->uName());
QTreeWidgetItem *uitem = new QTreeWidgetItem;
uitem->setText(0, str);
ui->treeWidget->insertTopLevelItem(0, uitem);
list<Collage*> &c = u->cList();
list<Collage*>::iterator i;
for (i = c.begin(); i != c.end(); ++i)
{
QTreeWidgetItem *citem = new QTreeWidgetItem;
citem->setText(0, QString::fromStdString((*i)->getCname()));
citem->setText(1, QString::fromStdString((*i)->getCid()));
uitem->addChild(citem);
}
// ui->treeWidget->setContextMenuPolicy(Qt::CustomContextMenu);
connect( ui->treeWidget, SIGNAL(itemClicked(QTreeWidgetItem*,int)),
this, SLOT(onItemClicked(QTreeWidgetItem*,int)) );
}
void MainWindow::creatAction()
{
m_add = new QAction("添加",this);
m_del = new QAction("删除",this);
connect(m_add,SIGNAL(triggered()),
this,SLOT(OnCollageAdd()));
}
void MainWindow::onItemClicked(QTreeWidgetItem *item, int index)
{
Q_UNUSED(index);
if( !item->parent()){
return ;
}
Collage *c = u->CollageInfo(item->text(1) .toStdString());
list<Student *>& s= c->sList();
list<Student *>::iterator i;
int j = 0;
ui->tableWidget->clear();
ui->tableWidget->setColumnCount(0);
ui->tableWidget->setRowCount(0);
for (i = s.begin(); i != s.end(); ++i)
{
ui->tableWidget->insertRow(j);
QStringList headr;
headr << "ID" << "姓名" << "年龄" << "身高" ;
ui->tableWidget->setHorizontalHeaderLabels(headr);
// ui->tableWidget->verticalHeader()->setHidden(true);//设置垂直标签隐藏
ui->tableWidget->verticalHeader()->setVisible(false);//设置垂直标签不可见
QTableWidgetItem *sid = new QTableWidgetItem;
sid->setText(QString::fromStdString((*i)->StudentSid()));
QTableWidgetItem *sname = new QTableWidgetItem;
sname->setText(QString::fromStdString((*i)->Name()));
QTableWidgetItem *sheight = new QTableWidgetItem;
sheight->setText(QString::number((*i)->Height()));
QTableWidgetItem *sage = new QTableWidgetItem;
sage->setText(QString::number((*i)->Age()));
if( 0==j )
{
ui->tableWidget->insertColumn(0);
}
ui->tableWidget->setItem(j, 0, sid);
if( 0==j )
{
ui->tableWidget->insertColumn(1);
}
ui->tableWidget->setItem(j, 1, sname);
if( 0==j )
{
ui->tableWidget->insertColumn(2);
}
ui->tableWidget->setItem(j, 2, sage);
if( 0==j )
{
ui->tableWidget->insertColumn(3);
}
ui->tableWidget->setItem(j, 3, sheight);
j++;
}
}
//右键菜单显示
void MainWindow::customContextMenuRequested(QPoint pos)
{
Q_UNUSED(pos);
QTreeWidgetItem *item = ui->treeWidget->currentItem();
QMenu *menu = new QMenu;
menu->addAction(m_add);
menu->addAction(m_del);
if(!item->parent())
{
menu->exec(QCursor::pos());
// menu->exec(ui->treeWidget->mapToGlobal(pos));
}
}
//添加
void MainWindow::OnCollageAdd()
{
newCollageDialog *Dlg = new newCollageDialog;
int ret = Dlg->exec();
if(ret == QDialog::Accepted)
{
QString cname = Dlg->getName();
QString cid = Dlg->getId();
Collage *c = new Collage(cid.toStdString(),cname.toStdString());
u->CollageAdd(c);
TreeInit();
}
}
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->mainToolBar->addAction(ui->actionOpen);
ui->mainToolBar->addAction(ui->actionNew);
ui->mainToolBar->addAction(ui->actionSave);
DataInit();//数据初始化
TreeInit();//列表初始化
creatAction();
connect(ui->treeWidget,SIGNAL(customContextMenuRequested(QPoint)),
this,SLOT(customContextMenuRequested(QPoint)));
}
MainWindow::~MainWindow()
{
delete m_add;
delete m_del;
delete ui;
}
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
界面设计:
用到了Tree Widget,Table Widget
程序设计思路图:
运行效果图:
注:功能并不完善,源码下载
文章浏览阅读766次。QTableView显示表格数据,并进行筛选和排序_qstandarditemmodel 怎么清除筛选
文章浏览阅读1.6k次。开启混合(Blend)后,通过Alpha通道控制当前屏幕纹理与历史屏幕纹理进行混合,当有物体运动时,就会将当前位置的物体影像与历史位置的物体影像进行混合,从而实现运动模糊效果。第一个 Pass通过Alpha通道控制当前屏幕纹理与历史屏幕纹理进行混合,通过 ColorMask RGB保证融合不影响Alpha通道值;第二个Pass对当前屏幕的Alpha通道进行采样,通过 ColorMask A保证采样不影响RGB通道的值。_unity 动态模糊
文章浏览阅读3.8w次,点赞4次,收藏30次。本文记录IOS平台下基于FFmpeg的推流器。该示例C语言的源代码来自于《最简单的基于FFMPEG的推流器》。相关的概念就不再重复记录了。源代码项目的目录结构如图所示。C代码位于ViewController.m文件中,内容如下所示。_ios ffmpeg 推流
文章浏览阅读2.7w次,点赞8次,收藏16次。今天写静态页面,需要拿jquery去控制checkbox的check属性,开始用的attr,每次设置完成后,点开f12观察elements,后面每次,无论怎么点击checkbox,它的checked属性都是选中的,于是上网查找,得以解决,下面是是转载的内容在jquery里,有两种操作元素属性的方法,一种是attr(),另一种是prop()。attr()的属性在页面首次加载时就确定。当页面初_jquery 获取check
文章浏览阅读7.2k次,点赞3次,收藏8次。1、创建语言文件 打开.pro文件,加入以下:TRANSLATIONS+=cn.ts 工具->外部->Qt语言家->更新翻译,将生成翻译文件cn.ts2、编辑翻译文件 启动Linguist(Qt语言家),打开cn.ts,然后进行编辑,主要是将源文对应的译文填写上,最后保存3、部署翻译文件 工具->外部->Qt语言家->部署翻译,将生成_qt怎么实现多语言切换
文章浏览阅读7.3k次,点赞17次,收藏22次。当你使用python manage.py startapp app01的命令创建了一个名为app01的新应用后,通常接下来要做的就是在settings.py里注册它,把它加到INSTAL..._installed_apps
文章浏览阅读7.4k次,点赞3次,收藏7次。keil+jlink环境下,stm32在SW模式下调试时,如果在download程序时报错no cortex-m sw device found,需要排查三个问题:1.确保接线正确;2. 高版本jlink固件可识别出赝品jlink,而MDK5.x版本要求SEGGER固件高于V4.78,排查是否是盗版jlink导致该问题发生。若是,可网购jlink-ob小调试器;3.如果是在程序烧写成功_keil no cortexm sw
文章浏览阅读568次。1.hadoop查看目标文件hadoop fs -ls /{目标文件路径}2.hadoop删除目标文件hadoop fs -rm /{目标文件路径}3.上传文件至目标路径hadoop fs -put /{本地文件路径} /{目标文件路径}4.默认hdfs会将文件保存三份,可以通过修改../hadoop/etc/hadoop/hdfs-site.xml中的dfs.repli..._如何扩展hadoop文件系统的功能,使其具有更加强大的文件管理的功能。
文章浏览阅读2.6k次。以前以为必须要使用遍历,查许多网站也是这样写的,但其实不用遍历也可以的:set fso=createobject("Scripting.FileSystemObject")fso.DeleteFolder(tempPath),true这样就行了。但这语法我却是看不懂。_vba 删除不为空的文件夹
文章浏览阅读780次。继承内存分析1.创建对象之前,先加载方法区中object类,GrandPa类,Father类,Son类的属性和方法2.在堆里分配空间,依次开辟空间将Object类的属性,GrandPa类,Father类,Son类的属性放入3.依次从Object开始,字符串放在方法区的常量池内package com;public class TestA { public static void main(String[] args) { Son son = new Son(); _java 继承的内存空间理解
文章浏览阅读1.6k次。前言Redis(四)------redis主从复制的实现上一节我们搭建了redis主从复制,redis主从复制主要作用读写分离和数据备份的作用。主机负责写入数据,从机负责读取数据。如果主机节点崩溃了,造成redis服务关闭,需要认为手动启动redis服务。因此我们集成哨兵模式来实现解决这个问题,实现redis的高可用作用。服务器用途redis端口号master-name备..._查看redis端口号存储数据大小
文章浏览阅读5.7k次,点赞3次,收藏18次。利用UltraISO写入映像到U盘,然后通过U盘引导安装centos。_centos7 u盘引导