Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.119.104.238] |
|
Сообщ.
#1
,
|
|
|
Переписал сорец заново - все отлично компилится, но вот кнопки работают не так - уже несколько часов не могу разобраться в чем причина - please help!
#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(); }; #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(); } Я попробовал вызвать функции-слоты из мейна - ошибок не выдает, но результат такой же как и при нажатии на пимпы ( таблица пустая и все тут( ). |
Сообщ.
#2
,
|
|
|
Вопрос решен!
|