WhiteMagic

QThread

May 21st, 2019
680
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. }
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×