Advertisement
WhiteMagic

QThread

May 21st, 2019
1,632
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //connect from base
  2. MainWindow *m= new MainWindow;
  3.     db=QSqlDatabase::addDatabase("QODBC");
  4.     db.setDatabaseName("DRIVER={SQL Server};SERVER="+ui->serverName->text()+";DATABASE="+ui->dbName->text()+";Trusted_Connection=yes;");
  5.     if(db.open()){
  6.         this->close();
  7.         m->showMaximized();
  8.         saveSetting();
  9.     }else{
  10.         QMessageBox::critical(this,"Error","Соединение не установлено!"+db.lastError().text());
  11.     }
  12. //--------------------------------------------------------
  13. //MainWindow
  14. MainWindow::MainWindow()
  15.    : mdiArea(new QMdiArea)
  16. {
  17.     setCentralWidget(mdiArea);
  18.     createAction();
  19.     createMenu();
  20.     createToolBar();
  21.     setWindowTitle(tr("ПК IT HELPER"));
  22.      setWindowIcon(QPixmap(":/servicesmodificata.png"));
  23.     setUnifiedTitleAndToolBarOnMac(true);
  24.     Navi *nav = new Navi(mdiArea);
  25.     QMdiSubWindow *subWindow2 = mdiArea->addSubWindow(nav);
  26.     subWindow2->setGeometry(0, 0, 428, 600);
  27.     subWindow2->show();
  28. }
  29. //из Nav  вызываются другие подокна
  30. //------------------------------------------------------
  31. //класс потока
  32. class Zapros : public QObject
  33. {
  34.     Q_OBJECT
  35.     Q_PROPERTY(QSqlQuery qry READ qry WRITE setQry NOTIFY qryChanged)
  36.     Q_PROPERTY(QString str READ str WRITE setStr NOTIFY strChanged)
  37.     QSqlQuery m_qry;
  38.     QString m_str;
  39.  
  40. public:
  41.     explicit Zapros(QObject *parent = nullptr);
  42.  
  43.     QSqlDatabase db;
  44.  
  45.     QSqlQuery qry() const;
  46.  
  47.     QString str() const;
  48.  
  49. signals:
  50.     void finished();
  51.     void send(QSqlQuery qry);
  52.     void qryChanged(QSqlQuery qry);
  53.     void strChanged(QString str);
  54.  
  55. public slots:
  56.     void run();
  57.     void select();
  58.     void setQry(QSqlQuery qry);
  59.     void setStr(QString str);
  60. };
  61.  
  62. //в срр потока
  63. void Zapros::select()
  64. {
  65.     qDebug()<<"в потоке";
  66.     qDebug()<<m_str;
  67.     m_qry.exec(m_str);
  68.     m_qry.next();
  69.            emit send(m_qry);
  70.            emit finished();
  71. }
  72. //Клас откуда вызван поток
  73.  
  74. Comp::Comp(QMdiArea *md, QWidget *parent) :
  75.     QDialog(parent),
  76.     ui(new Ui::Comp)
  77. {
  78.     MdiAreaComp = md;
  79.     ui->setupUi(this);
  80.      qryModel=new QSqlQueryModel(this);
  81.     setWindowTitle("Список компьютеров");
  82.     ui->tableView->setContextMenuPolicy(Qt::CustomContextMenu);
  83.     connect(ui->tableView,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(customMenu(QPoint)));
  84.     //------------------------------------------соединеие с потоком----------------------------------------------------------------------------
  85.     connect(&thread_1, &QThread::started, &zap1, &Zapros::run);
  86.     connect(&zap1, &Zapros::finished, &thread_1, &QThread::terminate);
  87.     connect(&zap1,SIGNAL(send(QSqlQuery)),this,SLOT(getQry(QSqlQuery)),Qt::DirectConnection);
  88.     zap1.moveToThread(&thread_1);
  89.     //-----------------------------------------------------------------------------------------------------------------------------------------
  90.  
  91.     s= "select id, maker, model, name, inv, ser, CPU, cpuZ, RAM, ramZ, HDD, hddZ, OSid, eToken, IP, spisan, blokhost, comment from Comp;";
  92.    select();
  93.  
  94.     ui->comboBox->clear();
  95.     ui->comboBox->addItem("Инв № содержит",QVariant(0));
  96.     ui->comboBox->addItem("Кол-во ОЗУ",QVariant(1));
  97.     ui->comboBox->addItem("Объём HDD",QVariant(2));
  98.     ui->comboBox->addItem("Операционная система",QVariant(3));
  99.     ui->comboBox->addItem("БлокХост",QVariant(4));
  100.     ui->comboBox->addItem("eToken содержит",QVariant(6));
  101.     ui->comboBox->addItem("Статус списания",QVariant(7));
  102.  
  103. }
  104.  
  105. void Comp::getQry(QSqlQuery qry)
  106. {
  107.    // qDebug()<<qry.value(0).toInt();
  108.     qryModel->setQuery(qry);
  109.     ui->tableView->setModel(qryModel);
  110.     ui->tableView->horizontalScrollBar();
  111.     ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
  112.     ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeMode::ResizeToContents);
  113.     qryModel->setHeaderData(1, Qt::Horizontal, "Производитель");
  114.     qryModel->setHeaderData(2, Qt::Horizontal, "Модель");
  115.     qryModel->setHeaderData(3, Qt::Horizontal, "Имя");
  116.     qryModel->setHeaderData(4, Qt::Horizontal, "Инвентарный номер");
  117.     qryModel->setHeaderData(5, Qt::Horizontal, "Серийный номер");
  118.     qryModel->setHeaderData(6, Qt::Horizontal, "Процессор");
  119.     qryModel->setHeaderData(7, Qt::Horizontal, "кол-во Ghz");
  120.     qryModel->setHeaderData(8, Qt::Horizontal, "Оперативная парять");
  121.     qryModel->setHeaderData(9, Qt::Horizontal, "кол-во Gb");
  122.     qryModel->setHeaderData(10, Qt::Horizontal, "Жесткий диск");
  123.     qryModel->setHeaderData(11, Qt::Horizontal, "кол-во GB");
  124.     qryModel->setHeaderData(12, Qt::Horizontal, "ОС");
  125.     qryModel->setHeaderData(13, Qt::Horizontal, "eToken");
  126.     qryModel->setHeaderData(14, Qt::Horizontal, "IP");
  127.     qryModel->setHeaderData(15, Qt::Horizontal, "Списан");
  128.     qryModel->setHeaderData(16, Qt::Horizontal, "БлокХост");
  129.     qryModel->setHeaderData(17, Qt::Horizontal, "Комментарий");
  130. }
  131.  
  132. void Comp::select()
  133. {
  134.     zap1.setStr(s);
  135.     thread_1.start();
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement