На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела *nix / gcc / Eclipse / Qt / wxWidgets / GTK+
  • При создании темы ОБЯЗАТЕЛЬНО указывайте версию тулкита / библиотеки / компилятора.
  • Перед тем как задать вопрос, сформулируйте его правильно, чтобы вас могли понять.
  • Нарушение Правил может повлечь наказание со стороны модераторов.


Полезные ссылки:
user posted image Boost по-русски
user posted image Qt по-русски
Модераторы: archimed7592
  
> Не могу соединить сигнал со слотом , :(
    Собственно вот исходник:
    ExpandedWrap disabled
      #include<QtGui>
       
      // Наследник класса QTableWidget
      class QTableWidget2 : public QTableWidget
      {
        Q_OBJECT // в принципе, этот макрос наследуется из QTableWidget
        public slots:
          void clear(QTableWidget &, QTableWidgetItem &);
          void generate(QTableWidget &, QTableWidgetItem &);
          int calculate(QTableWidget &, QTableWidgetItem &);
      };
      //********************************************
       
      // Инициализация массива нулями
      void QTableWidget2::clear(QTableWidget &table, QTableWidgetItem &item)
      {
        item.setText("0");
        for(int i=0; i<3; i++)
        for(int j=0; j<3; j++)
        {
          QTableWidgetItem *newItem = new QTableWidgetItem(item);
          table.setItem(i, j, newItem);
        }
      }
      //********************************************
       
      // Заполнение массива псевдослучайными числами
      void QTableWidget2::generate(QTableWidget &table, QTableWidgetItem &item)
      {
        int x=0;
        qsrand(1);
        for(int i=0; i<3; i++)
        for(int j=0; j<3; j++)
        {
          QTableWidgetItem *newItem = new QTableWidgetItem(item);
            
          x=qrand();
          QVariant v(x);
          QString s=v.toString();
            
          newItem->setText(s);
          table.setItem(i, j, newItem);
        }
      }
      //********************************************
       
      // Вычисление определителя
      int QTableWidget2::calculate(QTableWidget &table, QTableWidgetItem &item)
      {
        int result=0;
        
        QVariant v1(takeItem(0, 0));
        QVariant v2(takeItem(0, 1));
        QVariant v3(takeItem(0, 2));
        
        QVariant v4(takeItem(1, 0));
        QVariant v5(takeItem(1, 1));
        QVariant v6(takeItem(1, 2));
        
        QVariant v7(takeItem(2, 0));
        QVariant v8(takeItem(2, 1));
        QVariant v9(takeItem(2, 2));
        
        
        result=( v1.toInt()+v5.toInt()+v9.toInt() )+
        ( v2.toInt()+v6.toInt()+v7.toInt() )+
        ( v3.toInt()+v4.toInt()+v8.toInt() )-
        ( v3.toInt()+v5.toInt()+v7.toInt() )-
        ( v2.toInt()+v4.toInt()+v9.toInt() )-
        ( v1.toInt()+v6.toInt()+v8.toInt() );
        
        return result;
      }
      //********************************************
          
      // Функция для изменения цвета ячейки
      void ColorCell(int i, int j, QColor color, QTableWidget &table, QTableWidgetItem &item)
      {
          QTableWidgetItem *newItem=new QTableWidgetItem(item);
          
          // Устанавливаем значение ячейки:
          newItem=table.takeItem(i, j);
          
          // Устанавливаем цвет ячейки
          QBrush b; b.setColor(color);
          newItem->setForeground(b);
          
          // Перепичываем заданную ячейку таблицы:
          table.setItem(i, j, newItem);
      }
      //********************************************
       
      int main(int argc, char *argv[])
      {  
        QApplication app(argc, argv);
        
        QWidget wgt;
        wgt.setWindowTitle("Determinant Calculator");
        wgt.resize(400, 250);
        
          QTableWidget table(3, 3); QTableWidget2 *tw=new QTableWidget2(table);
          QTableWidgetItem item;
          
          tw->clear(table, item);
          
          /*
          const char *values[3][3] =
          {
              { "1", "2", "3" },
              { "4", "5", "6" },
              { "7", "8", "9" }
          };
          for (int i = 0; i < 3; ++i)
          for (int j = 0; j < 3; ++j)
          {
              QTableWidgetItem *item = new QTableWidgetItem();
              item->setText(values[i][j]);
              
              // Устанавливаем ToolTip'ы для ячеек:
              item->setToolTip(values[i][j]);
              
              table.setItem(i, j, item);
          }
          */
          
          
          
          // Изменяем цвета ячеек:
          /*
          ColorCell(1, 1, Qt::red, table, item);
          ColorCell(0, 0, Qt::blue, table, item);
          */
          
          // Компоненты интерфейса:
          QVBoxLayout vbox;
          QHBoxLayout hbox1, hbox2;
          
          QPushButton btn1("&Calculate");
          QPushButton btn2("&Generate");
          QPushButton btn3("C&lear");
          QPushButton btn4("&Exit");
          
          hbox1.addWidget(&btn1);
          hbox1.addWidget(&btn2);
          hbox1.addWidget(&btn3);
          hbox1.addWidget(&btn4);
          
          QLabel lbl1("Determinant = ");
          QLabel lbl2("0"); lbl2.setNum(100/*det*/);
          
          hbox2.addStretch(); // Пружина слева
          
          hbox2.addWidget(&lbl1);
          hbox2.addWidget(&lbl2);
          
          hbox2.addStretch(); // Пружина справа
          
          vbox.addWidget(&table);
          vbox.addLayout(&hbox1);
          vbox.addLayout(&hbox2);
        wgt.setLayout(&vbox);
        
        
        /*QObject*/QTableWidget2::connect(&btn1, SIGNAL(clicked()), tw, SLOT(calculate(table, item)));
        QTableWidget2::connect(&btn2, SIGNAL(clicked()), tw, SLOT(generate(table, item)));
        QTableWidget2::connect(&btn3, SIGNAL(clicked()), tw, SLOT(clear(table, item)));
        
        QObject::connect(&btn4, SIGNAL(clicked()), &app, SLOT(quit()));
        
        wgt.show();
        return app.exec();
      }


    Выдает вот такую ошибку (см. скриншот), которую у меня не получается исправить :(
    Прикреплённая картинка
    Прикреплённая картинка
      ExpandedWrap disabled
        // Наследник класса QTableWidget
        class QTableWidget2 : public QTableWidget
        {
          Q_OBJECT // в принципе, этот макрос наследуется из QTableWidget
          public slots:
            void clear(QTableWidget &, QTableWidgetItem &);
            void generate(QTableWidget &, QTableWidgetItem &);
            int calculate(QTableWidget &, QTableWidgetItem &);
        };

      Это все должно быть в заголовке (начиная с четвёртой версии), Q_OBJECT является макросом для компилятора
      и указанием к действию сначала для qmake, потом для moc
      ExpandedWrap disabled
        /*QObject*/QTableWidget2::connect(&btn1, SIGNAL(clicked()), tw, SLOT(calculate(table, item)));
          QTableWidget2::connect(&btn2, SIGNAL(clicked()), tw, SLOT(generate(table, item)));
          QTableWidget2::connect(&btn3, SIGNAL(clicked()), tw, SLOT(clear(table, item)));

      Это вообще бред какой то, когда перенесёшь QTableWidget2 в заголовок qmake c радостью начнёт ругаться, по количеству подставляемых параметров а у QPushButton::clicked() их нет!, во вторых это описание функции а не сама функция! а ты пытаешься передать ей table, item? в итоге полный бред получается :wacko:
      Сделай хотя бы так:
      ExpandedWrap disabled
        public slots:
           void clickedBtn1()
           ...
         
        void QTableWidget2::clickedBtn1()
        {
          QTableWidget *tbl = static_cast<QTableWidget*>(sender()->parent());//здесь ХЗ вроде у тебя таблица в стеке создаётся
          clear(*tbl, *tbl->currentItem());
          //или если работа происходит с одной и той же таблицей хотя ХЗ :
          //clear(*this, *currentItem());
        }
        to:SectoRz
        не хочу показаться черезмерно настойчивым, но я специально проверил и выяснил что moc не проходит по файлам cpp, а только по заголовочным.
          2Модераторы: думаю теперь самое время начать работать над факом(этот вопрос стабильно задаётся раз в 3-4 дня). Готов оказать посильную помощь :).
            Если в конструкторе объявить соединения объектов:

            ExpandedWrap disabled
              QTableWidget2::QTableWidget2()
              {
                connect(&btn1, SIGNAL(clicked()), tw, SLOT(calculate(table, item)));
                connect(&btn2, SIGNAL(clicked()), tw, SLOT(generate(table, item)));
                connect(&btn3, SIGNAL(clicked()), tw, SLOT(clear(table, item)));  
              }


            как тогда быть - ведь объекты btn1, btn2, btn3, tw и др. еще не созданы...
            Тогда нужно вводить конструктор с параметрами?

            ExpandedWrap disabled
              QTableWidget2::QTableWidget2(QObject *sender, QObject *receiver)
              {
                connect(sender, SIGNAL(clicked()), receiver, SLOT(calculate(table, item)));
                connect(sender, SIGNAL(clicked()), receiver, SLOT(generate(table, item)));
                connect(sender, SIGNAL(clicked()), receiver, SLOT(clear(table, item)));
              }


            или как?

            P.S.:
            Цитата archimed7592 @
            самое время начать работать над факом

            Было бы неплохо!
              Ну допустим разделил я сорец на интерфейс и реализацию:

              // MyTW2.h


              ExpandedWrap disabled
                // Наследник класса QTableWidget
                 
                class QTableWidget2 : public QTableWidget
                {
                  Q_OBJECT // в принципе, этот макрос наследуется из QTableWidget
                  public:
                    //QTableWidget2();
                  public slots:
                    void clear(QTableWidget &, QTableWidgetItem &);
                    void generate(QTableWidget &, QTableWidgetItem &);
                    int calculate(QTableWidget &, QTableWidgetItem &);
                };



              // main.cpp


              ExpandedWrap disabled
                #include<QtGui>
                #include"MyTW2.h"
                 
                // Конструктор QTableWidget2
                /*
                QTableWidget2::QTableWidget2()
                {
                  QObject::connect(&btn1, SIGNAL(clicked()), tw, SLOT(calculate(table, item)));
                  QObject::connect(&btn2, SIGNAL(clicked()), tw, SLOT(generate(table, item)));
                  QObject::connect(&btn3, SIGNAL(clicked()), tw, SLOT(clear(table, item)));
                }
                */
                //********************************************
                 
                // Инициализация массива нулями
                void QTableWidget2::clear(QTableWidget &table, QTableWidgetItem &item)
                {
                  item.setText("0");
                  for(int i=0; i<3; i++)
                  for(int j=0; j<3; j++)
                  {
                    QTableWidgetItem *newItem = new QTableWidgetItem(item);
                    table.setItem(i, j, newItem);
                  }
                }
                //********************************************
                 
                // Заполнение массива псевдослучайными числами
                void QTableWidget2::generate(QTableWidget &table, QTableWidgetItem &item)
                {
                  int x=0;
                  qsrand(1);
                  for(int i=0; i<3; i++)
                  for(int j=0; j<3; j++)
                  {
                    QTableWidgetItem *newItem = new QTableWidgetItem(item);
                      
                    x=qrand();
                    QVariant v(x);
                    QString s=v.toString();
                      
                    newItem->setText(s);
                    table.setItem(i, j, newItem);
                  }
                }
                //********************************************
                 
                // Вычисление определителя
                int QTableWidget2::calculate(QTableWidget &table, QTableWidgetItem &item)
                {
                  int result=0;
                  
                  QVariant v1(takeItem(0, 0));
                  QVariant v2(takeItem(0, 1));
                  QVariant v3(takeItem(0, 2));
                  
                  QVariant v4(takeItem(1, 0));
                  QVariant v5(takeItem(1, 1));
                  QVariant v6(takeItem(1, 2));
                  
                  QVariant v7(takeItem(2, 0));
                  QVariant v8(takeItem(2, 1));
                  QVariant v9(takeItem(2, 2));
                  
                  
                  result=( v1.toInt()+v5.toInt()+v9.toInt() )+
                  ( v2.toInt()+v6.toInt()+v7.toInt() )+
                  ( v3.toInt()+v4.toInt()+v8.toInt() )-
                  ( v3.toInt()+v5.toInt()+v7.toInt() )-
                  ( v2.toInt()+v4.toInt()+v9.toInt() )-
                  ( v1.toInt()+v6.toInt()+v8.toInt() );
                  
                  return result;
                }
                //********************************************
                    
                // Функция для изменения цвета ячейки
                void ColorCell(int i, int j, QColor color, QTableWidget &table, QTableWidgetItem &item)
                {
                    QTableWidgetItem *newItem=new QTableWidgetItem(item);
                    
                    // Устанавливаем значение ячейки:
                    newItem=table.takeItem(i, j);
                    
                    // Устанавливаем цвет ячейки
                    QBrush b; b.setColor(color);
                    newItem->setForeground(b);
                    
                    // Перепичываем заданную ячейку таблицы:
                    table.setItem(i, j, newItem);
                }
                //********************************************
                 
                int main(int argc, char *argv[])
                {  
                  QApplication app(argc, argv);
                  
                  QWidget wgt;
                  wgt.setWindowTitle("Determinant Calculator");
                  wgt.resize(400, 250);
                  
                    QTableWidget table(3, 3);
                    QTableWidget2 *tw=new QTableWidget2(table);
                    QTableWidgetItem item;
                    
                    tw->clear(table, item);
                    
                    /*
                    const char *values[3][3] =
                    {
                        { "1", "2", "3" },
                        { "4", "5", "6" },
                        { "7", "8", "9" }
                    };
                    for (int i = 0; i < 3; ++i)
                    for (int j = 0; j < 3; ++j)
                    {
                        QTableWidgetItem *item = new QTableWidgetItem();
                        item->setText(values[i][j]);
                        
                        // Устанавливаем ToolTip'ы для ячеек:
                        item->setToolTip(values[i][j]);
                        
                        table.setItem(i, j, item);
                    }
                    */
                    
                    
                    
                    // Изменяем цвета ячеек:
                    /*
                    ColorCell(1, 1, Qt::red, table, item);
                    ColorCell(0, 0, Qt::blue, table, item);
                    */
                    
                    // Компоненты интерфейса:
                    QVBoxLayout vbox;
                    QHBoxLayout hbox1, hbox2;
                    
                    QPushButton btn1("&Calculate");
                    QPushButton btn2("&Generate");
                    QPushButton btn3("C&lear");
                    QPushButton btn4("&Exit");
                    
                    hbox1.addWidget(&btn1);
                    hbox1.addWidget(&btn2);
                    hbox1.addWidget(&btn3);
                    hbox1.addWidget(&btn4);
                    
                    QLabel lbl1("Determinant = ");
                    QLabel lbl2("0"); lbl2.setNum(100/*det*/);
                    
                    hbox2.addStretch(); // Пружина слева
                    
                    hbox2.addWidget(&lbl1);
                    hbox2.addWidget(&lbl2);
                    
                    hbox2.addStretch(); // Пружина справа
                    
                    vbox.addWidget(&table);
                    vbox.addLayout(&hbox1);
                    vbox.addLayout(&hbox2);
                  wgt.setLayout(&vbox);
                  
                  
                  //QTableWidget2::connect
                  QObject::connect(&btn1, SIGNAL(clicked()), tw, SLOT(calculate(table, item)));
                  QObject::connect(&btn2, SIGNAL(clicked()), tw, SLOT(generate(table, item)));
                  QObject::connect(&btn3, SIGNAL(clicked()), tw, SLOT(clear(table, item)));
                  
                  QObject::connect(&btn4, SIGNAL(clicked()), &app, SLOT(quit()));
                  
                  wgt.show();
                  return app.exec();
                }



              Таже самая ошибка вылетает... Что дальше делать? Кто нибудь поможет мне скоипилить этот сорец в исполняемый файл или мне просить помощи на другом форуме?
              Сообщение отредактировано: SectoRz -
                MyTW2.h
                ExpandedWrap disabled
                  class QTableWidget2 : public QTableWidget
                  {
                    Q_OBJECT // в принципе, этот макрос наследуется из QTableWidget
                    public:
                      QTableWidget2 ( int rows, int columns, QWidget * parent = 0 )
                        : QTableWidget(rows,columns, parent) {}
                      int result;
                    public slots:
                      void clear();
                      void generate();
                      void calculate();
                  };


                ExpandedWrap disabled
                  #include<QtGui>
                  #include"MyTW2.h"
                   
                  // Инициализация массива нулями
                  void QTableWidget2::clear()
                  {
                    for(int i=0; i<table.rowCount(); i++)
                    for(int j=0; j<table.columnCount(); j++)
                    if (table.item(i,j))
                    {
                      table.item(i,j)->setText("0");
                    }
                  }
                  //********************************************
                   
                  // Заполнение массива псевдослучайными числами
                  void QTableWidget2::generate()
                  {
                    int x=0;
                    qsrand(1);
                    for(int i=0; i<table.rowCount(); i++)
                    for(int j=0; j<table.columnCount(); j++)
                    if (table.item(i,j))
                    {
                        
                      x=qrand();
                      QVariant v(x);
                      QString s=v.toString();
                   
                      table.item(i,j)->setText(s);
                    }
                  }
                  //********************************************
                   
                  // Вычисление определителя
                  void QTableWidget2::calculate()
                  {
                    result=0;
                    
                    QVariant v1(takeItem(0, 0));
                    QVariant v2(takeItem(0, 1));
                    QVariant v3(takeItem(0, 2));
                    
                    QVariant v4(takeItem(1, 0));
                    QVariant v5(takeItem(1, 1));
                    QVariant v6(takeItem(1, 2));
                    
                    QVariant v7(takeItem(2, 0));
                    QVariant v8(takeItem(2, 1));
                    QVariant v9(takeItem(2, 2));
                    
                    
                    result=( v1.toInt()+v5.toInt()+v9.toInt() )+
                    ( v2.toInt()+v6.toInt()+v7.toInt() )+
                    ( v3.toInt()+v4.toInt()+v8.toInt() )-
                    ( v3.toInt()+v5.toInt()+v7.toInt() )-
                    ( v2.toInt()+v4.toInt()+v9.toInt() )-
                    ( v1.toInt()+v6.toInt()+v8.toInt() );
                  }
                   
                  ...    
                   
                  int main(int argc, char *argv[])
                  {
                    ...
                    /* тебе английским языком сказано, что нет у тебя такого конструктора */
                    //QTableWidget2 *tw=new QTableWidget2(table);
                    QTableWidget2 *tw=new QTableWidget2(3, 3);
                    //предварительно заполни таблицу
                    ...
                    //QTableWidget2::connect
                    QObject::connect(&btn1, SIGNAL(clicked()), tw, SLOT(calculate()));
                    QObject::connect(&btn2, SIGNAL(clicked()), tw, SLOT(generate()));
                    QObject::connect(&btn3, SIGNAL(clicked()), tw, SLOT(clear()));
                    
                    QObject::connect(&btn4, SIGNAL(clicked()), &app, SLOT(quit()));
                    
                    wgt.show();
                    return app.exec();
                  }
                  Я то видел надпись, что конструктор не тот и даже поглядев в ассистент создавал в унаследованном классе:
                  ExpandedWrap disabled
                    QTableWidget2 ( int rows, int columns, QWidget * parent = 0 );


                  Но оказывается конструктор для наследуемых классов нужно описывать как в твоем коде, то бишь:
                  ExpandedWrap disabled
                    QTableWidget2 ( int rows, int columns, QWidget * parent = 0 )
                          : QTableWidget(rows,columns, parent) {}


                  Все остальное тоже сделал как ты посоветовал, теперь самое время взяться за "бубен" (см. рис).

                  P.S.:
                  Видимо соединения объектов нужно прописать в конструкторе... щас буду пробовать!
                  Сообщение отредактировано: SectoRz -

                  Прикреплённая картинка
                  Прикреплённая картинка
                    В общем при таком раскладе все скомпилилось:

                    // MyTW2.h
                    ExpandedWrap disabled
                      #include<QObject>
                      #include<QTableWidget>
                      class QTableWidget2 : public QTableWidget
                      {
                        Q_OBJECT // в принципе, этот макрос наследуется из QTableWidget
                        public:
                          QTableWidget2 ( int rows, int columns, QWidget * parent = 0 )
                          : QTableWidget(rows, columns, parent) {}
                          int result;
                        public slots:
                          void clear(QTableWidget &);
                          void generate(QTableWidget &);
                          void calculate();
                      };


                    // main.cpp
                    ExpandedWrap disabled
                      #include<QtGui>
                      #include"MyTW2.h"
                       
                      // Инициализация массива нулями
                      void QTableWidget2::clear(QTableWidget &table)
                      {
                        for(int i=0; i<table.rowCount(); i++)
                        for(int j=0; j<table.columnCount(); j++)
                        if (table.item(i,j))
                        {
                          table.item(i,j)->setText("0");
                        }
                      }
                      //********************************************
                       
                      // Заполнение массива псевдослучайными числами
                      void QTableWidget2::generate(QTableWidget &table)
                      {
                        int x=0;
                        qsrand(1);
                        for(int i=0; i<table.rowCount(); i++)
                        for(int j=0; j<table.columnCount(); j++)
                        if (table.item(i,j))
                        {
                            
                          x=qrand();
                          QVariant v(x);
                          QString s=v.toString();
                       
                          table.item(i,j)->setText(s);
                        }
                      }
                      //********************************************
                       
                      // Вычисление определителя
                      void QTableWidget2::calculate()
                      {
                        result=0;
                        
                        QVariant v1(takeItem(0, 0));
                        QVariant v2(takeItem(0, 1));
                        QVariant v3(takeItem(0, 2));
                        
                        QVariant v4(takeItem(1, 0));
                        QVariant v5(takeItem(1, 1));
                        QVariant v6(takeItem(1, 2));
                        
                        QVariant v7(takeItem(2, 0));
                        QVariant v8(takeItem(2, 1));
                        QVariant v9(takeItem(2, 2));
                        
                        
                        result=( v1.toInt()+v5.toInt()+v9.toInt() )+
                        ( v2.toInt()+v6.toInt()+v7.toInt() )+
                        ( v3.toInt()+v4.toInt()+v8.toInt() )-
                        ( v3.toInt()+v5.toInt()+v7.toInt() )-
                        ( v2.toInt()+v4.toInt()+v9.toInt() )-
                        ( v1.toInt()+v6.toInt()+v8.toInt() );
                      }
                      //********************************************
                          
                      // Функция для изменения цвета ячейки
                      void ColorCell(int i, int j, QColor color, QTableWidget &table, QTableWidgetItem &item)
                      {
                          QTableWidgetItem *newItem=new QTableWidgetItem(item);
                          
                          // Устанавливаем значение ячейки:
                          newItem=table.takeItem(i, j);
                          
                          // Устанавливаем цвет ячейки
                          QBrush b; b.setColor(color);
                          newItem->setForeground(b);
                          
                          // Перепичываем заданную ячейку таблицы:
                          table.setItem(i, j, newItem);
                      }
                      //********************************************
                       
                      int main(int argc, char *argv[])
                      {  
                        QApplication app(argc, argv);
                        
                        QWidget wgt;
                        wgt.setWindowTitle("Determinant Calculator");
                        wgt.resize(400, 250);
                        
                          QTableWidget table(3, 3); // создаем таблицу
                          QTableWidgetItem item;
                          
                          // Заполняем таблицу:
                          const char *values[3][3] =
                          {
                              { "1", "2", "3" },
                              { "4", "5", "6" },
                              { "7", "8", "9" }
                          };
                          for (int i = 0; i < 3; ++i)
                          for (int j = 0; j < 3; ++j)
                          {
                              QTableWidgetItem *item = new QTableWidgetItem();
                              item->setText(values[i][j]);
                              
                              // Устанавливаем ToolTip'ы для ячеек:
                              item->setToolTip(values[i][j]);
                              
                              table.setItem(i, j, item);
                          }
                          
                          QTableWidget2 *tw=new QTableWidget2(3, 3);
                          tw->clear(table);
                          
                          
                          // Изменяем цвета ячеек:
                          /*
                          ColorCell(1, 1, Qt::red, table, item);
                          ColorCell(0, 0, Qt::blue, table, item);
                          */
                          
                          // Компоненты интерфейса:
                          QVBoxLayout vbox;
                          QHBoxLayout hbox1, hbox2;
                          
                          QPushButton btn1("&Calculate");
                          QPushButton btn2("&Generate");
                          QPushButton btn3("C&lear");
                          QPushButton btn4("&Exit");
                          
                          hbox1.addWidget(&btn1);
                          hbox1.addWidget(&btn2);
                          hbox1.addWidget(&btn3);
                          hbox1.addWidget(&btn4);
                          
                          QLabel lbl1("Determinant = ");
                          QLabel lbl2("0"); lbl2.setNum(100/*det*/);
                          
                          hbox2.addStretch(); // Пружина слева
                          
                          hbox2.addWidget(&lbl1);
                          hbox2.addWidget(&lbl2);
                          
                          hbox2.addStretch(); // Пружина справа
                          
                          vbox.addWidget(&table);
                          vbox.addLayout(&hbox1);
                          vbox.addLayout(&hbox2);
                        wgt.setLayout(&vbox);
                        
                        // Соединения объектов:
                        QObject::connect(&btn1, SIGNAL(clicked()), tw, SLOT(calculate()));
                        QObject::connect(&btn2, SIGNAL(clicked()), tw, SLOT(generate(table)));
                        QObject::connect(&btn3, SIGNAL(clicked()), tw, SLOT(clear(table)));
                        
                        QObject::connect(&btn4, SIGNAL(clicked()), &app, SLOT(quit()));
                        
                        wgt.show();
                        return app.exec();
                      }


                    Но ни одна из кнопок не делает того что требуется (при нажатии на кнопки - ничего не происходит)... Щас буду пробовать исправить...
                    Сообщение отредактировано: SectoRz -
                      Да тут надо сначала в конструкторе формы сделать
                      ExpandedWrap disabled
                        setupUi (this)
                      , а потом сказать что-то вроде этого
                      ExpandedWrap disabled
                        connect (btn1, SIGNAL(clicked()), this, SLOT (slot1()));
                        Все заработало!
                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                        0 пользователей:


                        Рейтинг@Mail.ru
                        [ Script execution time: 0,1005 ]   [ 16 queries used ]   [ Generated: 27.04.24, 13:47 GMT ]