Russian Qt Forum
Октябрь 02, 2024, 23:42 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: QTableWidget. Таблицы.  (Прочитано 13119 раз)
Asechka
Гость
« : Декабрь 21, 2014, 18:18 »

Как правильно написать код, чтобы таблица работала с переменными введенными с клавиатуры?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Декабрь 21, 2014, 19:02 »

А что вы хотите от таблицы QTableWidget?
Записан

Asechka
Гость
« Ответ #2 : Декабрь 21, 2014, 19:05 »

Желательно чтобы она работала с данными которые я ввожу. Примерно хочу сделать excel таблицу.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #3 : Декабрь 21, 2014, 19:38 »

если я правильно понял твою цель, в книжке Бланшетт, Саммерфилд есть отличный пример
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Asechka
Гость
« Ответ #4 : Декабрь 21, 2014, 19:46 »

Там через класс делается,а я хочу сделать все в конструкторе.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #5 : Декабрь 21, 2014, 19:52 »

а конструктор не в классе что ли находится? Улыбающийся

опиши детальнее что ты хочешь.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Asechka
Гость
« Ответ #6 : Декабрь 21, 2014, 20:02 »

Ну вот допустим у меня есть первый столбец в таблице, который я полностью заполняю(ввод с клавиатуры), в следующих столбцах уже формулы, которые я изначально определила.
Мне надо, чтобы данные из первого столбца каким-то образом записались в таблицу и без проблем считались по формулам. Пока у меня так не получается.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #7 : Декабрь 21, 2014, 20:06 »

Можно, например, отслеживать какой элемент таблицы был изменен с помощью сигнала itemChanged
или какая ячейка изменилась (будут получены ее индексы)

Посмотрите какие есть сигналы и выберите с какими будете работать: http://qt-project.org/doc/qt-4.8/qtablewidget.html#signals
« Последнее редактирование: Декабрь 21, 2014, 20:09 от gil9red » Записан

kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #8 : Декабрь 21, 2014, 20:07 »

QTableWidget ничего не знает ни о каких формулах, это просто отображение данных. Весь функционал (парсинг формул, чтение значений через ссылки на ячейки, и т.д.) тебе придется писать самой.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Asechka
Гость
« Ответ #9 : Декабрь 21, 2014, 20:08 »

Можно, например, отслеживать какой элемент таблицы был изменен с помощью сигнала itemChanged
Можно пожалуйста подробнее?
Записан
Asechka
Гость
« Ответ #10 : Декабрь 21, 2014, 20:12 »

Посмотрите какие есть сигналы и выберите с какими будете работать: http://qt-project.org/doc/qt-4.8/qtablewidget.html#signals

Я знаю какие есть сигналы. Просто не понимаю, как с ними работать.
Мне бы конкретный пример работы, когда данные вводятся с клавиатуры.
« Последнее редактирование: Декабрь 21, 2014, 20:14 от Asechka » Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #11 : Декабрь 21, 2014, 20:13 »

Можно, например, отслеживать какой элемент таблицы был изменен с помощью сигнала itemChanged
Можно пожалуйста подробнее?

Пожалуйста:
Код
C++ (Qt)
MainWindow::MainWindow(QWidget *parent) :
   QMainWindow(parent),
   ui(new Ui::MainWindow)
{
   ui->setupUi(this);
 
   QObject::connect(ui->tableWidget, SIGNAL(itemChanged(QTableWidgetItem*)), SLOT(changed(QTableWidgetItem*)));
   QObject::connect(ui->tableWidget, SIGNAL(cellChanged(int,int)), SLOT(changed(int,int)));
}
 
MainWindow::~MainWindow()
{
   delete ui;
}
 
void MainWindow::changed(QTableWidgetItem *item) {
   qDebug() << QString("Элемент [%1, %2] %3 был изменен.").arg(item->row()).arg(item->column()).arg(item->text());
}
void MainWindow::changed(int row, int column) {
   qDebug() << QString("Ячейка [%1, %2] была изменена.").arg(row).arg(column);
}
 
« Последнее редактирование: Декабрь 21, 2014, 20:27 от gil9red » Записан

Alexu007
Гость
« Ответ #12 : Декабрь 21, 2014, 20:19 »

Код
C++ (Qt)
           QTableWidgetItem *item = new QTableWidgetItem();
           item->setText(str);
           ui->tableWidget->setItem(1, 2, item);

Вот так можно записать строку (str) в произвольное место таблицы, в данном случае строка 1 колонка 2 (начинаются с 0).
Записан
Asechka
Гость
« Ответ #13 : Декабрь 21, 2014, 20:34 »

Код
C++ (Qt)
           QTableWidgetItem *item = new QTableWidgetItem();
           item->setText(str);
           ui->tableWidget->setItem(1, 2, item);

Вот так можно записать строку (str) в произвольное место таблицы, в данном случае строка 1 колонка 2 (начинаются с 0).

Да это я знаю как сделать Подмигивающий
Записан
Asechka
Гость
« Ответ #14 : Декабрь 21, 2014, 20:36 »

Цитировать
Пожалуйста:
Код
C++ (Qt)
MainWindow::MainWindow(QWidget *parent) :
   QMainWindow(parent),
   ui(new Ui::MainWindow)
{
   ui->setupUi(this);
 
   QObject::connect(ui->tableWidget, SIGNAL(itemChanged(QTableWidgetItem*)), SLOT(changed(QTableWidgetItem*)));
   QObject::connect(ui->tableWidget, SIGNAL(cellChanged(int,int)), SLOT(changed(int,int)));
}
 
MainWindow::~MainWindow()
{
   delete ui;
}
 
void MainWindow::changed(QTableWidgetItem *item) {
   qDebug() << QString("Элемент [%1, %2] %3 был изменен.").arg(item->row()).arg(item->column()).arg(item->text());
}
void MainWindow::changed(int row, int column) {
   qDebug() << QString("Ячейка [%1, %2] была изменена.").arg(row).arg(column);
}
 

Спасибо. Более-менее глаза мне открыли.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.182 секунд. Запросов: 22.