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


Полезные ссылки:
user posted image Boost по-русски
user posted image Qt по-русски
Модераторы: archimed7592
  
> Button-ы не работают , в чем проблема?
    Переписал сорец заново - все отлично компилится, но вот кнопки работают не так - уже несколько часов не могу разобраться в чем причина - please help!

    ExpandedWrap disabled
      #include<QtGui>
       
      class MyGUI : public QWidget
      {
        Q_OBJECT
        public:
          MyGUI(QWidget *parent=0); // конструктор
          QTableWidget *table;
          QTableWidgetItem *item;
          QPushButton *btn1;
          QPushButton *btn2;
          QPushButton *btn3;
          QPushButton *btn4;
          QLabel *lbl1;
          QLabel *lbl2;
          
          int result;
          void brush_cell(int i, int j, QColor color);
          void print_result();
        
        public slots:
          void clear();
          void generate();
          void calculate();
      };


    ExpandedWrap disabled
      #include"MyGui.h"
       
      // Конструктор
      MyGUI::MyGUI(QWidget *parent) : QWidget(parent)
      {
        table=new QTableWidget(3, 3);
        item=new QTableWidgetItem;
        btn1=new QPushButton("&Calculate");
        btn2=new QPushButton("&Generate");
        btn3=new QPushButton("C&lear");
        btn4=new QPushButton("&Exit");
        lbl1=new QLabel("Determinant = ");
        lbl2=new QLabel("0");
        
        QObject::connect(btn1, SIGNAL(clicked()), table, SLOT(calculate()));
        QObject::connect(btn2, SIGNAL(clicked()), table, SLOT(generate()));
        QObject::connect(btn3, SIGNAL(clicked()), table, SLOT(clear()));
        
        
          // Заполняем таблицу:
          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);
          }
          
      }
      ////////////////////////////////////////////////
       
      // Функция для просмотра результата:
      void MyGUI::print_result()
      {
        lbl2->setNum(result);
      }
      ////////////////////////////////////////////////
       
      // Функция для изменения цвета ячейки
      /*
        Пример вызова функции:
        brush_cell(1, 1, Qt::red);
        brush_cell(0, 0, Qt::blue);
      */  
      void MyGUI::brush_cell(int i, int j, QColor color)
      {
        //QTableWidgetItem *newItem=new QTableWidgetItem(item);
          
        // Устанавливаем значение ячейки:
        item=table->takeItem(i, j);
          
        // Устанавливаем цвет ячейки
        QBrush b; b.setColor(color);
        item->setForeground(b);
          
        // Перепичываем заданную ячейку таблицы:
        table->setItem(i, j, item);
      }
      ////////////////////////////////////////////////
       
      // Инициализация массива нулями
      void MyGUI::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 MyGUI::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 MyGUI::calculate()
      {
        result=0;
        
        QVariant v1(table->takeItem(0, 0));
        QVariant v2(table->takeItem(0, 1));
        QVariant v3(table->takeItem(0, 2));
        
        QVariant v4(table->takeItem(1, 0));
        QVariant v5(table->takeItem(1, 1));
        QVariant v6(table->takeItem(1, 2));
        
        QVariant v7(table->takeItem(2, 0));
        QVariant v8(table->takeItem(2, 1));
        QVariant v9(table->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() );
        
        print_result();
      }
      ////////////////////////////////////////////////
       
      int main(int argc, char *argv[])
      {  
        QApplication app(argc, argv);
        MyGUI gui;
        gui.setWindowTitle("Determinant Calculator");
        gui.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);
          }
      */
          
          
          
        gui.clear();
        gui.generate();
        gui.calculate();
       
        // Размещение виджетов:
        QVBoxLayout vbox;
        QHBoxLayout hbox1, hbox2;
        
        hbox1.addWidget(gui.btn1);
        hbox1.addWidget(gui.btn2);
        hbox1.addWidget(gui.btn3);
        hbox1.addWidget(gui.btn4);
        
        hbox2.addStretch(); // Пружина слева
          
        hbox2.addWidget(gui.lbl1);
        hbox2.addWidget(gui.lbl2);
          
        hbox2.addStretch(); // Пружина справа
        
        vbox.addWidget(gui.table);
        vbox.addLayout(&hbox1);
        vbox.addLayout(&hbox2);
        
        gui.setLayout(&vbox);
        gui.show();
        
        QObject::connect(gui.btn4, SIGNAL(clicked()), &app, SLOT(quit()));
        return app.exec();
      }

    Я попробовал вызвать функции-слоты из мейна - ошибок не выдает, но результат такой же как и при нажатии на пимпы ( таблица пустая и все тут( ).
    Сообщение отредактировано: SectoRz -
      Вопрос решен!
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


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