Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. [SOLVED] signal and slot between two classes
QtWS25 Last Chance

[SOLVED] signal and slot between two classes

Scheduled Pinned Locked Moved General and Desktop
18 Posts 4 Posters 3.6k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • F Offline
    F Offline
    frankiefrank
    wrote on last edited by
    #9

    Isn't this supposed to be
    @table->clear();@
    ?

    I'm sorry but I won't be able to remotely assist you through every compile step of code. Maybe you should start out by working with some basic Qt sample.

    "Roads? Where we're going, we don't need roads."

    1 Reply Last reply
    0
    • E Offline
      E Offline
      ecmanja
      wrote on last edited by
      #10

      sorry ,here is my code i'm getting error if i try to discard so please do help.
      @#ifndef MAINWINDOW_H
      #define MAINWINDOW_H

      #include <QMainWindow>
      #include <QListWidget>
      #include <QMouseEvent>
      #include <QMimeData>
      #include <QDrag>
      #include <QDebug>
      #include <QTabWidget>
      #include <QTableWidget>
      #include <QMimeType>
      #include <QTcpSocket>
      #include <QMessageBox>

      namespace Ui {
      class MainWindow;
      }
      class ProjectListWidget :public QTableWidget
      {
      Q_OBJECT

      public:
      ProjectListWidget(QWidget *parent = 0);

      protected:
      void mousePressEvent(QMouseEvent *event);
      void mouseMoveEvent(QMouseEvent *event);
      void dragEnterEvent(QDragEnterEvent *event);
      void dragMoveEvent(QDragMoveEvent *event);
      void dropEvent(QDropEvent *event);

      private:
      void performDrag();
      QPoint startPos;

      };
      class MainWindow : public QMainWindow
      {
      Q_OBJECT

      public:
      explicit MainWindow(QWidget *parent = 0);
      ProjectListWidget *table4,*table5;
      ~MainWindow();

      private:
      Ui::MainWindow *ui;
      public slots:
      void on_item1_changed();

      };

      #endif // MAINWINDOW_H
      @

      1 Reply Last reply
      0
      • E Offline
        E Offline
        ecmanja
        wrote on last edited by
        #11

        @#include "mainwindow.h"
        #include "ui_mainwindow.h"

        MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
        {
        ui->setupUi(this);

        ProjectListWidget *table=new ProjectListWidget(ui->widget);
        table->setGeometry(0,0,750,580);
        table->setColumnCount(1);
        table->setRowCount(1);
        table->horizontalHeader()->setDefaultSectionSize(750);
        table->verticalHeader()->setDefaultSectionSize(580);
        table->verticalHeader()->hide();
        table->horizontalHeader()->hide();
        table->setAcceptDrops(true);
        setAcceptDrops(true);
        table->setItem(0,0,new QTableWidgetItem("ITEM 1"));

        ProjectListWidget *table2=new ProjectListWidget(ui->widget_3);
        table2->setGeometry(0,0,750,580);
        table2->setColumnCount(1);
        table2->setRowCount(1);
        table2->horizontalHeader()->setDefaultSectionSize(750);
        table2->verticalHeader()->setDefaultSectionSize(580);
        table2->verticalHeader()->hide();
        table2->horizontalHeader()->hide();
        table2->setAcceptDrops(true);
        setAcceptDrops(true);
        table2->setItem(0,0,new QTableWidgetItem("ITEM 2"));

        ProjectListWidget *table3=new ProjectListWidget(ui->widget_4);
        table3->setGeometry(0,0,750,580);
        table3->setColumnCount(1);
        table3->setRowCount(1);
        table3->horizontalHeader()->setDefaultSectionSize(750);
        table3->verticalHeader()->setDefaultSectionSize(580);
        table3->verticalHeader()->hide();
        table3->horizontalHeader()->hide();
        table3->setAcceptDrops(true);
        setAcceptDrops(true);
        table3->setItem(0,0,new QTableWidgetItem("ITEM 3"));

        ProjectListWidget table4=new ProjectListWidget(ui->widget_2);
        //table2->setGeometry(1000,40,270,161);
        table4->setColumnCount(1);
        table4->setRowCount(1);
        table4->verticalHeader()->setDefaultSectionSize(200);
        table4->horizontalHeader()->setDefaultSectionSize(350);
        table4->horizontalHeader()->hide();
        table4->verticalHeader()->hide();
        table4->setAcceptDrops(true);
        setAcceptDrops(true);
        connect(table4,SIGNAL(itemChanged(QTableWidgetItem
        )),this,SLOT(on_item1_changed()));

        ProjectListWidget *table5=new ProjectListWidget(ui->widget_5);
        //table2->setGeometry(1000,40,270,161);
        table5->setColumnCount(1);
        table5->setRowCount(1);
        table5->verticalHeader()->setDefaultSectionSize(200);
        table5->horizontalHeader()->setDefaultSectionSize(350);
        table5->horizontalHeader()->hide();
        table5->verticalHeader()->hide();
        table5->setAcceptDrops(true);
        setAcceptDrops(true);
        ProjectListWidget *table6=new ProjectListWidget(ui->widget_6);
        //table2->setGeometry(1000,40,270,161);
        table6->setColumnCount(1);
        table6->setRowCount(1);
        table6->verticalHeader()->setDefaultSectionSize(200);
        table6->horizontalHeader()->setDefaultSectionSize(350);
        table6->horizontalHeader()->hide();
        table6->verticalHeader()->hide();
        table6->setAcceptDrops(true);
        setAcceptDrops(true);
        }

        ProjectListWidget::ProjectListWidget(QWidget *parent)
        : QTableWidget(parent)
        {
        setAcceptDrops(true);
        }
        void ProjectListWidget::mousePressEvent(QMouseEvent *event)
        {

        qDebug()<<"mouse press";
        QWidget::mousePressEvent(event);
            if(event->button() == Qt::LeftButton)
            {
            }
        

        }
        void ProjectListWidget::mouseMoveEvent(QMouseEvent *event)
        {
        qDebug()<<"mouse move event";
        if (event->buttons() & Qt::LeftButton) {
        int distance = (event->pos() - startPos).manhattanLength();
        if (distance >= QApplication::startDragDistance())
        performDrag();
        }
        QTableWidget::mouseMoveEvent(event);
        }
        void ProjectListWidget::performDrag()
        {
        qDebug()<<"perform drag";
        QTableWidgetItem *item = currentItem();
        if (item) {
        QMimeData *mimeData = new QMimeData;
        mimeData->setText(item->text());

            QDrag *drag = new QDrag(this);
            drag->setMimeData(mimeData);
            QString fileName = "C:/Users/teclever/Desktop/qt-logo.jpg";
            QPixmap pic (fileName);
            drag->setPixmap(pic);
            if (drag->exec&#40;Qt::CopyAction&#41; == Qt::CopyAction)
            {
            }
        }
        

        }
        void ProjectListWidget::dragEnterEvent(QDragEnterEvent *event)
        {
        qDebug()<<"drag enter";
        ProjectListWidget *source =
        qobject_cast<ProjectListWidget *>(event->source());
        if (source && source != this) {
        event->setDropAction(Qt::CopyAction);
        event->accept();
        }
        }
        void ProjectListWidget::dragMoveEvent(QDragMoveEvent *event)
        {
        qDebug()<<"drag move event";
        ProjectListWidget *source =
        qobject_cast<ProjectListWidget *>(event->source());
        if (source && source != this) {
        event->setDropAction(Qt::MoveAction);
        setAcceptDrops(true);
        event->acceptProposedAction();
        }
        }
        @ continue

        1 Reply Last reply
        0
        • E Offline
          E Offline
          ecmanja
          wrote on last edited by
          #12

          @#if 1
          void ProjectListWidget::dropEvent(QDropEvent *event)
          {

           qDebug()<<"drop event";
          ProjectListWidget *source =
                  qobject_cast<ProjectListWidget *>(event->source());
          if (source && source != this) {
              QString str=event->mimeData()->text();
              qDebug()<<"str=="<<str;
              QTableWidgetItem *it=new QTableWidgetItem;
              setItem(0,0,new QTableWidgetItem(str));
            //  insertRow(rowCount());
              event->setDropAction(Qt::MoveAction);
              event->accept();
              event->acceptProposedAction();
              QTableWidget::dropEvent(event);
          

          }
          QTableWidget::dropEvent(event);
          }
          #endif
          void MainWindow::on_item1_changed()
          {
          qDebug()<<"changed";

          QMessageBox msgBox;
          msgBox.setText("The document has been modified.");
          msgBox.setInformativeText("Do you want to save your changes?");
          msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard );
          msgBox.setDefaultButton(QMessageBox::Save);
          int ret = msgBox.exec&#40;&#41;;
          switch (ret&#41; {
            case QMessageBox::Save:
                qDebug()<<"Save was clicked";
                break;
            case QMessageBox::Discard:
                qDebug()<<" Don't Save was clicked";
                  table4->clear();
                break;
            case QMessageBox::Cancel:
                // Cancel was clicked
                break;
            default:
                // should never be reached
                break;
          }
          

          }

          MainWindow::~MainWindow()
          {
          delete ui;

          }
          @

          1 Reply Last reply
          0
          • F Offline
            F Offline
            frankiefrank
            wrote on last edited by
            #13

            What is the exact error you get and when do you get it (when you compile? when you run?)

            "Roads? Where we're going, we don't need roads."

            1 Reply Last reply
            0
            • E Offline
              E Offline
              ecmanja
              wrote on last edited by
              #14

              thanks for giving your time. In on_item1_changed() loop i have used qmessage box so that when item changes it ask for save and discard ,i want to clear the table if i press discard so i included
              @table4->clear();@
              but after running this code when i press discard i'm getting .exe not working. actually i cant able to perform any actions on table4.

              1 Reply Last reply
              0
              • E Offline
                E Offline
                ecmanja
                wrote on last edited by
                #15

                thank you very much frankiefrank i solved the issue :)

                1 Reply Last reply
                0
                • G Offline
                  G Offline
                  goblin
                  wrote on last edited by
                  #16

                  What was the issue?

                  1 Reply Last reply
                  0
                  • E Offline
                    E Offline
                    ecmanja
                    wrote on last edited by
                    #17

                    i have declared it twice so got that error i.e we must use only "table4" instead of "projectlistwidget *table4" in .cpp because it is already declared in .h

                    1 Reply Last reply
                    0
                    • F Offline
                      F Offline
                      frankiefrank
                      wrote on last edited by
                      #18

                      OK, good to know.

                      By the way, when changing the post topic to solved, it's best to add [SOLVED] in the beginning of the title, not at the end.

                      "Roads? Where we're going, we don't need roads."

                      1 Reply Last reply
                      0

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved