Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //cpp.......................................
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
- #include <QFile>
- #include <QTableView>
- #include <QHeaderView>
- #include <QSizePolicy>
- #include <QTableWidgetItem>
- #include <QTableWidget>
- #include <QFileDialog>
- #include <QIcon>
- #include <QStandardPaths>
- #include <QKeyEvent>
- #include <QTextStream>
- #include <fstream>
- #include <QTextCursor>
- #include <QColor>
- #include <QTextCodec>
- MainWindow::MainWindow(QWidget *parent)
- : QMainWindow(parent)
- , ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
- this->setMinimumWidth(1300);
- this->setMaximumWidth(1300);
- this->setMinimumHeight(700);
- this->setMaximumHeight(700);
- ui -> tableWidget -> setMinimumWidth(1000);
- ui -> tableWidget -> setMouseTracking(1);
- ui -> tableWidget_2 -> setMouseTracking(1);
- ui->tableWidget -> setEditTriggers ( QAbstractItemView :: NoEditTriggers );
- ui -> tableWidget ->setTabKeyNavigation(1);
- ui -> tableWidget ->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
- ui -> tableWidget ->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
- ui -> upper -> setEnabled(0);
- ui -> downer -> setEnabled(0);
- ui -> tableWidget -> setEnabled(0);
- ui -> addElement -> setEnabled(0);
- ui -> deleteElement -> setEnabled(0);
- ui -> textEdit -> setEnabled(0);
- ui -> accept -> setEnabled(0);
- ui -> saver -> setEnabled(0);
- ui -> comboBox -> setEnabled(0);
- ui -> upper -> setIcon(QIcon("E:/QT/Projects/build-untitled8-Desktop_Qt_5_12_0_MSVC2017_32bit-Debug/upper.png"));
- ui -> downer -> setIcon(QIcon("E:/QT/Projects/build-untitled8-Desktop_Qt_5_12_0_MSVC2017_32bit-Debug/downer.png"));
- ui -> addElement -> setIcon(QIcon("E:/QT/Projects/build-untitled8-Desktop_Qt_5_12_0_MSVC2017_32bit-Debug/plus.png"));
- ui -> deleteElement -> setIcon(QIcon("E:/QT/Projects/build-untitled8-Desktop_Qt_5_12_0_MSVC2017_32bit-Debug/minus.png"));
- ui -> accept -> setIcon(QIcon("E:/QT/Projects/build-untitled8-Desktop_Qt_5_12_0_MSVC2017_32bit-Debug/success.png"));
- ui -> opener -> setIcon(QIcon("E:/QT/Projects/build-untitled8-Desktop_Qt_5_12_0_MSVC2017_32bit-Debug/open.png"));
- ui -> saver -> setIcon(QIcon("E:/QT/Projects/build-untitled8-Desktop_Qt_5_12_0_MSVC2017_32bit-Debug/save.png"));
- ui -> creater -> setIcon(QIcon("E:/QT/Projects/build-untitled8-Desktop_Qt_5_12_0_MSVC2017_32bit-Debug/new.png"));
- QTableWidgetItem *item = new QTableWidgetItem();
- QTableWidgetItem *item1 = new QTableWidgetItem();
- QTableWidgetItem *item2 = new QTableWidgetItem();
- QTableWidgetItem *item3 = new QTableWidgetItem();
- item -> setText("Номер телефона\nгорода");
- ui -> tableWidget -> setHorizontalHeaderItem(5, item);
- item1 -> setText("Номер телефона\nабонента");
- ui -> tableWidget -> setHorizontalHeaderItem(6, item1);
- item2 -> setText("Название\nгорода");
- ui -> tableWidget -> setHorizontalHeaderItem(2, item2);
- item3 -> setText("Время\nразговора");
- ui -> tableWidget -> setHorizontalHeaderItem(3, item3);
- }
- MainWindow::~MainWindow()
- {
- delete ui;
- }
- MyClass* adder(MyClass* call,int n) {
- MyClass* b = new MyClass[n];
- for (int i = 0; i < n - 1; i++) {
- b[i].MyClass::set(call[i].MyClass::Getdate(),call[i].MyClass::Getcode(),call[i].MyClass::Getname(),call[i].MyClass::Gettime(),call[i].MyClass::Getrate(),call[i].MyClass::Getnumber(),call[i].MyClass::Getnumuser());
- }
- b[n - 1].MyClass::set("","","","","","","");
- return b;
- }
- MyClass* deleter(MyClass* call,int n, int row) {
- MyClass* b = new MyClass[n - 1];
- for (int i = 0; i < row; i++) {
- b[i].MyClass::set(call[i].MyClass::Getdate(),call[i].MyClass::Getcode(),call[i].MyClass::Getname(),call[i].MyClass::Gettime(),call[i].MyClass::Getrate(),call[i].MyClass::Getnumber(),call[i].MyClass::Getnumuser());
- }
- for (int i = row + 1; i < n; i++) {
- b[i - 1].MyClass::set(call[i].MyClass::Getdate(),call[i].MyClass::Getcode(),call[i].MyClass::Getname(),call[i].MyClass::Gettime(),call[i].MyClass::Getrate(),call[i].MyClass::Getnumber(),call[i].MyClass::Getnumuser());
- }
- return b;
- }
- void MainWindow::on_opener_triggered()
- {
- //QString file = QFileDialog::getExistingDirectory(this, tr("Open Directory")), QFileDialog::showDirsOnly | QFileDialog::DontResolveSyslinks);
- /*QList<QUrl> urls;
- urls << QUrl::fromLocalFile("E:/QT/Projects/untitled8/my");
- QFileDialog file;
- file*/
- //QFile file(":/new/prefix1/my/hello.txt");
- QString filename = QFileDialog::getOpenFileName(
- this,
- "Открыть документ",
- //QDir::currentPath(),
- "E:/QT/Projects/untitled8/my",
- "Text files (*.txt) ;; csv files (*.csv)"
- );
- name = filename;
- QFile file(filename);
- int i = 0;
- if ((file.exists())&&(file.open(QIODevice::ReadOnly | QIODevice::Text)))
- {
- QString str;
- while(!file.atEnd()) {
- addElement();
- QString str;
- QString dd = file.readLine();
- str = dd.split(';')[0];
- call[i].Setdate(str.simplified());
- str = dd.split(';')[1];
- call[i].Setcode(str.simplified());
- str = dd.split(';')[2];
- call[i].Setname(str.simplified());
- str = dd.split(';')[3];
- call[i].Settime(str.simplified());
- str = dd.split(';')[4];
- call[i].Setrate(str.simplified());
- str = dd.split(';')[5];
- call[i].Setnumber(str.simplified());
- str = dd.split(';')[6];
- call[i].Setnumuser(str.simplified());
- i++;
- }
- file.close();
- ui -> tableWidget -> setEnabled(1);
- ui -> addElement -> setEnabled(1);
- ui -> textEdit -> setEnabled(1);
- ui -> upper -> setEnabled(1);
- ui -> downer -> setEnabled(1);
- ui -> saver -> setEnabled(1);
- ui -> accept -> setEnabled(1);
- ui -> comboBox -> setEnabled(1);
- re();
- }
- }
- void MainWindow::addElement() {
- mainNumber++;
- call = adder(call, mainNumber);
- ui -> tableWidget -> insertRow(ui -> tableWidget -> rowCount());
- for (int j = 0; j < ui -> tableWidget -> columnCount(); j++)
- {
- ui -> tableWidget -> setItem(ui -> tableWidget -> rowCount() - 1, j,new QTableWidgetItem(""));
- }
- ui -> deleteElement -> setEnabled(1);
- }
- void MainWindow::on_addElement_clicked()
- {
- addElement();
- }
- void MainWindow::on_deleteElement_clicked()
- {
- QModelIndexList gg = ui->tableWidget->selectionModel()->selectedIndexes();
- while (!gg.empty())
- { if (gg[0].row() == Row)
- ui ->textEdit -> clear();
- call = deleter (call,mainNumber,gg[0].row());
- ui->tableWidget->removeRow(gg[0].row());
- gg = ui->tableWidget->selectionModel()->selectedIndexes();
- mainNumber--;
- }
- if (mainNumber == 0) {
- ui -> deleteElement -> setEnabled(0);
- }
- myRow = -1;
- }
- void MainWindow::on_tableWidget_cellClicked(int row, int column)
- {
- Row = row;
- Column = column;
- ui -> textEdit -> setText(ui -> tableWidget -> item(row, column) -> text());
- ui -> textEdit -> setFocus();
- ui -> textEdit -> moveCursor(QTextCursor::End);
- //ui -> tableWidget -> selectRow(row);
- ui -> accept -> setEnabled(1);
- }
- void MainWindow::on_textEdit_textChanged()
- {
- QTableWidgetItem *item = new QTableWidgetItem();
- item->setText(ui -> textEdit -> toPlainText());
- ui -> tableWidget -> setItem(Row, Column, item);
- record(Row,Column,ui -> textEdit -> toPlainText());
- QModelIndexList gg = ui->tableWidget->selectionModel()->selectedIndexes();
- }
- void MainWindow::on_tableWidget_cellEntered(int row, int column)
- {
- /*for (int i = 0; i < ui -> tableWidget -> columnCount(); i++)
- ui -> tableWidget -> item(row, i)->setBackground(Qt::gray);
- for (int j = 0; j < mainNumber; j++)
- for (int i = 0; i < ui -> tableWidget -> columnCount(); i++)
- if (j != row) {
- ui -> tableWidget -> item(j, i)->setBackground(Qt::white);
- }*/
- if (myRow != -1)
- for (int i = 0; i < ui -> tableWidget -> columnCount(); i++)
- ui -> tableWidget -> item(myRow, i)->setBackground(QColor::fromRgb(51, 51, 51));
- for (int i = 0; i < ui -> tableWidget -> columnCount(); i++)
- ui -> tableWidget -> item(row, i)->setBackground(QColor::fromRgb(100, 100, 100));
- myRow = row;
- }
- void MainWindow::on_tableWidget_viewportEntered()
- {
- /* for (int j = 0; j < mainNumber; j++)
- for (int i = 0; i < ui -> tableWidget -> columnCount(); i++)
- ui -> tableWidget -> item(j, i)->setBackground(Qt::white);*/
- if (myRow != -1)
- for (int i = 0; i < ui -> tableWidget -> columnCount(); i++)
- ui -> tableWidget -> item(myRow, i)->setBackground(QColor::fromRgb(51, 51, 51));
- }
- void MainWindow::record(int row, int column, QString value) {
- if (column == 0)
- call[row].Setdate(value);
- else if (column == 1)
- call[row].Setcode(value);
- else if (column == 2)
- call[row].Setname(value);
- else if (column == 3)
- call[row].Settime(value);
- else if (column == 4)
- call[row].Setrate(value);
- else if (column == 5)
- call[row].Setnumber(value);
- else if (column == 6)
- call[row].Setnumuser(value);
- }
- void MainWindow::re() {
- QTableWidgetItem *item;
- for (int i = 0; i < mainNumber; i++) {
- item = new QTableWidgetItem();
- item->setText(call[i].Getdate());
- ui -> tableWidget -> setItem(i, 0, item);
- item = new QTableWidgetItem();
- item->setText(call[i].Getcode());
- ui -> tableWidget -> setItem(i, 1, item);
- item = new QTableWidgetItem();
- item->setText(call[i].Getname());
- ui -> tableWidget -> setItem(i, 2, item);
- item = new QTableWidgetItem();
- item->setText(call[i].Gettime());
- ui -> tableWidget -> setItem(i, 3, item);
- item = new QTableWidgetItem();
- item->setText(call[i].Getrate());
- ui -> tableWidget -> setItem(i, 4, item);
- item = new QTableWidgetItem();
- item->setText(call[i].Getnumber());
- ui -> tableWidget -> setItem(i, 5, item);
- item = new QTableWidgetItem();
- item->setText(call[i].Getnumuser());
- ui -> tableWidget -> setItem(i, 6, item);
- }
- }
- void MainWindow::on_tableWidget_cellDoubleClicked(int row, int column)
- {
- QTableWidgetItem *item = new QTableWidgetItem();
- item->setText("");
- ui -> tableWidget -> setItem(row, column, item);
- record(row,column,"");
- }
- void MainWindow::on_saver_triggered()
- {
- QFile file(name);
- QTextStream stream(&file);
- file.open(QIODevice::Append | QIODevice::Text | QIODevice::Truncate);
- //const char *chStr;
- for (int i = 0; i < mainNumber; i++) {
- stream << call[i].Getdate() << ";";
- stream << call[i].Getcode() << ";";
- stream << call[i].Getname() << ";";
- stream << call[i].Gettime() << ";";
- stream << call[i].Getrate() << ";";
- stream << call[i].Getnumber() << ";";
- if (i != mainNumber - 1)
- stream << call[i].Getnumuser() << ";" << endl;
- else
- stream << call[i].Getnumuser();
- }
- //file.flush();
- file.close();
- }
- void MainWindow::on_accept_clicked()
- {
- ui -> accept -> setEnabled(0);
- ui -> tableWidget -> setFocus();
- }
- void MainWindow::on_tableWidget_2_viewportEntered()
- {
- /*for (int j = 0; j < mainNumber; j++)
- for (int i = 0; i < ui -> tableWidget -> columnCount(); i++)
- ui -> tableWidget -> item(j, i)->setBackground(Qt::white);*/
- if (myRow != -1)
- for (int i = 0; i < ui -> tableWidget -> columnCount(); i++)
- ui -> tableWidget -> item(myRow, i)->setBackground(QColor::fromRgb(51, 51, 51));
- }
- void MainWindow::on_comboBox_activated(const QString &arg1)
- {
- QModelIndex index =ui->comboBox -> model() -> index(0,0);
- QVariant v(0);
- ui -> comboBox -> model() -> setData( index, v, Qt::UserRole -1);
- QList<QString> a;
- int s = 0;
- if (arg1 == "по дате") {
- for (int i = 0; i < mainNumber;i++) {
- if (!call[i].Getdate().isEmpty())
- a.append(call[i].Getdate());
- else {
- a.append("яяяяя");
- s++;
- }
- }
- if (s != mainNumber)
- changer(a);
- }
- if (arg1 == "по названию") {
- for (int i = 0; i < mainNumber;i++) {
- if (!call[i].Getname().isEmpty())
- a.append(call[i].Getname());
- else {
- a.append("яяяяя");
- s++;
- }
- }
- if (s != mainNumber)
- Sorter(a);
- }
- if (arg1 == "по номеру города") {
- for (int i = 0; i < mainNumber;i++) {
- if (!call[i].Getnumber().isEmpty())
- a.append(call[i].Getnumber());
- else {
- a.append("яяяяя");
- s++;
- }
- }
- if (s != mainNumber)
- Sorter(a);
- }
- if (arg1 == "по номеру абонента") {
- for (int i = 0; i < mainNumber;i++) {
- if (!call[i].Getnumuser().isEmpty())
- a.append(call[i].Getnumuser());
- else {
- a.append("яяяяя");
- s++;
- }
- }
- if (s != mainNumber)
- Sorter(a);
- }
- if (arg1 == "по коду") {
- for (int i = 0; i < mainNumber;i++) {
- if (!call[i].Getcode().isEmpty())
- a.append(call[i].Getcode());
- else {
- a.append("яяяяя");
- s++;
- }
- }
- if (s != mainNumber)
- Sorter(a);
- }
- if (arg1 == "по тарифу") {
- for (int i = 0; i < mainNumber;i++) {
- if (!call[i].Getrate().isEmpty())
- a.append(call[i].Getrate());
- else {
- a.append("яяяяя");
- s++;
- }
- }
- if (s != mainNumber)
- Sorter(a);
- }
- if (arg1 == "по продолжительности") {
- for (int i = 0; i < mainNumber;i++) {
- if (!call[i].Gettime().isEmpty())
- a.append(call[i].Gettime());
- else {
- a.append("яяяяя");
- s++;
- }
- }
- if (s != mainNumber)
- Sorter(a);
- }
- re();
- }
- void MainWindow::Sorter(QList<QString> a) {
- QList<QString> b = a;
- b.sort();
- QString ff;
- for (int i = 0; i < mainNumber; i++)
- for (int j = 0; j < mainNumber; j++) {
- if (i != j)
- if (b.at(i) == a.at(j)) {
- swaper(i , j);
- ff = a.at(j);
- a[j] = a.at(i);
- a[i] = ff;
- break;
- }
- }
- // for (int i = 0;)
- // for(int j = i + 1; j < mainNumber; j++)
- // if(strcmp(a.at(i),a.at(j))>0)
- // {
- // tt = a.at(i);
- // a[i] = a.at(j);
- // a[j] = tt;
- // swaper(i,j);
- // }
- // QString h = "";
- // for (int i = 0; i < mainNumber; i++)
- // h = h + a.at(i);
- //ui -> label -> setText(h);
- //.append(h + f.at(6) + f.at(7) + f.at(8) + f.at(9) + f.at(3) + f.at(4) + f.at(0) + f.at(1));
- //h = h + f.at(6) + f.at(7) + ":" + f.at(4) + f.at(5) + ":" + f.at(0) + f.at(1) + f.at(2) + f.at(3);
- /*QList<QString> a;
- QList<char*> b;
- for (int i = 0; i < mainNumber;i++) {
- a.append(call[i].Getdate());*/
- }
- void MainWindow::swaper(int row1, int row2) {
- QString a = call[row1].Getdate();
- QString b = call[row2].Getdate();
- call[row1].Setdate(b);
- call[row2].Setdate(a);
- a = call[row1].Getcode();
- b = call[row2].Getcode();
- call[row1].Setcode(b);
- call[row2].Setcode(a);
- a = call[row1].Getname();
- b = call[row2].Getname();
- call[row1].Setname(b);
- call[row2].Setname(a);
- a = call[row1].Gettime();
- b = call[row2].Gettime();
- call[row1].Settime(b);
- call[row2].Settime(a);
- a = call[row1].Getrate();
- b = call[row2].Getrate();
- call[row1].Setrate(b);
- call[row2].Setrate(a);
- a = call[row1].Getnumber();
- b = call[row2].Getnumber();
- call[row1].Setnumber(b);
- call[row2].Setnumber(a);
- a = call[row1].Getnumuser();
- b = call[row2].Getnumuser();
- call[row1].Setnumuser(b);
- call[row2].Setnumuser(a);
- }
- void MainWindow::on_upper_clicked()
- {
- QModelIndexList gg = ui->tableWidget->selectionModel()->selectedIndexes();
- if (!gg.empty())
- if (gg[0].row()!=0) {
- swaper (gg[0].row(),gg[0].row() - 1);
- }
- if (!gg.empty())
- if (gg[0].row()!=0)
- ui -> tableWidget -> QTableView::selectRow(gg[0].row() - 1);
- re();
- }
- void MainWindow::on_downer_clicked()
- {
- QModelIndexList gg = ui->tableWidget->selectionModel()->selectedIndexes();
- if (!gg.empty())
- if (gg[0].row()!=mainNumber - 1) {
- swaper (gg[0].row(),gg[0].row() + 1);
- }
- if (!gg.empty())
- if (gg[0].row()!=mainNumber - 1)
- ui -> tableWidget -> QTableView::selectRow(gg[0].row() + 1);
- re();
- }
- void MainWindow::changer(QList<QString> a) {
- QString f, h;
- QList<QString> b;
- for (int i = 0; i < mainNumber; i++) {
- f = a.at(i);
- h = "";
- if ((f != "яяяяя") && (!f.at(9).isNull())) {
- b.append(h + f.at(6) + f.at(7) +f.at(8) + f.at(9) + f.at(3) + f.at(4) + f.at(0) + f.at(1));
- }
- else
- b.append("яяяяя");
- }
- b.sort();
- for (int i = 0; i < mainNumber; i++) {
- f = b.at(i);
- h = "";
- if (f != "яяяяя") {
- b[i] = h + f.at(6) + f.at(7) + ":" + f.at(4) + f.at(5) + ":" + f.at(0) + f.at(1) + f.at(2) + f.at(3);
- }
- }
- QString ff;
- for (int i = 0; i < mainNumber; i++)
- for (int j = 0; j < mainNumber; j++) {
- if (i != j)
- if (b.at(i) == a.at(j)) {
- swaper(i , j);
- ff = a.at(j);
- a[j] = a.at(i);
- a[i] = ff;
- break;
- }
- }
- }
- void MainWindow::on_creater_triggered()
- {
- QFileDialog dialog;
- //dialog.setFileMode(QFileDialog::AnyFile);
- QString strFile = dialog.getSaveFileName(this, "Создать новый файл","E:/QT/Projects/untitled8/my","Text files (*.txt) ;; csv files (*.csv)");
- name = strFile;
- if (name != "") {
- ui -> tableWidget -> setEnabled(1);
- ui -> addElement -> setEnabled(1);
- ui -> textEdit -> setEnabled(1);
- ui -> upper -> setEnabled(1);
- ui -> downer -> setEnabled(1);
- ui -> saver -> setEnabled(1);
- ui -> accept -> setEnabled(1);
- ui -> comboBox -> setEnabled(1);
- }
- }
- //header...............................................
- #ifndef MAINWINDOW_H
- #define MAINWINDOW_H
- #include <QMainWindow>
- #include <myclass.h>
- QT_BEGIN_NAMESPACE
- namespace Ui { class MainWindow; }
- QT_END_NAMESPACE
- class MainWindow : public QMainWindow
- {
- Q_OBJECT
- public:
- MainWindow(QWidget *parent = nullptr);
- ~MainWindow();
- int Row = 0;
- int Column = 0;
- int mainNumber = 0;
- QString name;
- int myRow = -1;
- MyClass* call;
- private slots:
- void on_opener_triggered();
- void on_addElement_clicked();
- void on_deleteElement_clicked();
- void on_tableWidget_cellClicked(int row, int column);
- void on_textEdit_textChanged();
- void on_tableWidget_cellEntered(int row, int column);
- void on_tableWidget_viewportEntered();
- void record(int row, int column, QString value);
- void re();
- void on_tableWidget_cellDoubleClicked(int row, int column);
- void addElement();
- void on_saver_triggered();
- void on_accept_clicked();
- void on_tableWidget_2_viewportEntered();
- void on_comboBox_activated(const QString &arg1);
- void Sorter(QList<QString> a);
- void swaper(int row1, int row2);
- void on_upper_clicked();
- void on_downer_clicked();
- void changer(QList<QString> a);
- void on_creater_triggered();
- private:
- Ui::MainWindow *ui;
- };
- #endif // MAINWINDOW_H
- //main.cpp.....................................
- #include "mainwindow.h"
- #include <QApplication>
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- MainWindow w;
- w.show();
- return a.exec();
- }
- //class.cpp......................................
- #include "mainwindow.h"
- #include <QApplication>
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- MainWindow w;
- w.show();
- return a.exec();
- }
- //class.h........................................
- #include "mainwindow.h"
- #ifndef MYCLASS_H
- #define MYCLASS_H
- #include <QString>
- class MyClass
- {
- QString date;
- QString code;
- QString name;
- QString time;
- QString rate;
- QString number;
- QString numuser;
- public:
- MyClass();
- QString Getdate();
- QString Gettime();
- QString Getcode();
- QString Getname();
- QString Getrate();
- QString Getnumber();
- QString Getnumuser();
- void Setdate(QString a);
- void Settime(QString a);
- void Setcode(QString a);
- void Setname(QString a);
- void Setrate(QString a);
- void Setnumber(QString a);
- void Setnumuser(QString a);
- void set(QString a, QString d, QString e, QString c1, QString f,QString aa, QString bb);
- };
- #endif // MYCLASS_H
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement