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

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

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

Пожалуйста:
Код
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);
}
 

А вот могу я вместо вывода надписи в changed присвоить какой-нибудь l значения ячейки, которую изменили?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



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

Пожалуйста:
Код
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);
}
 

А вот могу я вместо вывода надписи в changed присвоить какой-нибудь l значения ячейки, которую изменили?

Можете Улыбающийся Разрешаю Смеющийся

Код:
void MainWindow::changed(QTableWidgetItem *item) {
    item->setText("!!!");
}
« Последнее редактирование: Декабрь 21, 2014, 20:51 от gil9red » Записан

Asechka
Гость
« Ответ #17 : Декабрь 21, 2014, 20:51 »

Можете Улыбающийся Разрешаю Смеющийся

как то так?
Код:
void MainWindow::changed() 
{
    QTableWidgetItem *item;
    l=item->text();
}
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



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

Можете Улыбающийся Разрешаю Смеющийся

как то так?
Код:
void MainWindow::changed() 
{
    QTableWidgetItem *item;
    l=item->text();
}

нет Улыбающийся

Код:
void MainWindow::changed(QTableWidgetItem *item) {
    QString text_cell = item->text();
    ...
}

я не знаю какого типа ваша переменная l Улыбающийся

Если она типа int, тогда:
Код:
void MainWindow::changed(QTableWidgetItem *item) {
    QString text_cell = item->text();
    int l = text_cell.toInt();
    ...
}
« Последнее редактирование: Декабрь 21, 2014, 20:58 от gil9red » Записан

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

Она типа QString.

Допустим. Спасибо Улыбающийся
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



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

Она типа QString.

Допустим. Спасибо Улыбающийся

Пожалуйста Улыбающийся Обращайтесь Подмигивающий
Записан

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

Я ее хочу потом преобразовать в float.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



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

Я ее хочу потом преобразовать в float.

http://qt-project.org/doc/qt-4.8/qstring.html#toFloat
Записан

Asechka
Гость
« Ответ #23 : Декабрь 21, 2014, 22:31 »

Ну это я знаю. Спасибо Улыбающийся

Что-то не нравится ему этот код... Ошибки выдает.
« Последнее редактирование: Декабрь 21, 2014, 22:57 от Asechka » Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #24 : Декабрь 22, 2014, 00:55 »

Ну это я знаю. Спасибо Улыбающийся

Что-то не нравится ему этот код... Ошибки выдает.

Сложно понять в чем ошибка, не зная ее и не видя код
Записан

Asechka
Гость
« Ответ #25 : Декабрь 22, 2014, 03:15 »

Сложно понять в чем ошибка, не зная ее и не видя код
Код:
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->tableWidget->setFrameStyle(3);
    ui->tableWidget->setColumnCount(3);
    ui->tableWidget->setRowCount(3);
    ui->tableWidget->setHorizontalHeaderLabels(QStringList()<< "l,см" << "Т,c" << "v,Гц" );

    QObject::connect(ui->tableWidget, SIGNAL(itemChanged(QTableWidgetItem*)), SLOT(changed(QTableWidgetItem*)));
    QObject::connect(ui->tableWidget, SIGNAL(cellChanged(int,int)), SLOT(changed(QTableWidgetItem *item)));

    for(int row = 0; row < ui->tableWidget->rowCount(); row++)
        for(int column = 1; column < 2; column++)
        {
            T=2*pi*sqrt(d/g);
            QTableWidgetItem *item = new QTableWidgetItem();
            item->setText(QString("%1").arg(T));
            ui->tableWidget->setItem(row, column, item);
        }
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::changed(QTableWidgetItem *item)
{
    QString text_cell = item->text();
    d = text_cell.toInt();
    
}

C2511: void MainWindow::changed(QTableWidgetItem *): ЇҐаҐЈа㦥­­ п дг­ЄжЁп-з«Ґ­ ­Ґ ­ ©¤Ґ­  ў "MainWindow"
C2597: ­Ґ¤®ЇгбвЁ¬ п ббл«Є  ­  ­Ґбв вЁзҐбЄЁ© з«Ґ­ "MainWindow::d"
« Последнее редактирование: Декабрь 22, 2014, 03:17 от Asechka » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #26 : Декабрь 22, 2014, 03:32 »

переменная d ему чем-то не угодила, без заголовочного файла точнее сказать нельзя
Записан

Изучением 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
Гость
« Ответ #27 : Декабрь 22, 2014, 03:34 »

переменная d ему чем-то не угодила, без заголовочного файла точнее сказать нельзя
Код:
namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();


private slots:

    //void on_pushButton_clicked();
    void changed(QTableWidgetItem*);

private:
    float T,g,pi;
    int d;
    QString l,l1;
    Ui::MainWindow *ui;
};
Записан
Alexu007
Гость
« Ответ #28 : Декабрь 22, 2014, 08:56 »

Чему равны d и g в конструкторе формы?

Если ты хочешь по кликам на ячейки таблицы и введённым туда значениям заполнять другие ячейки - то это не в конструкторе формы же делать нада, а в обработчике сигналов изменения ячейки. Куда должны передаваться row и col ячейки. Конструктор формы работает только в момент создания формы, а не тогда, когда приложение уже запущено и ты в таблицу кликаешь.

Ну эт не считая того, что ты int делишь на float - какой результат ожидается?
« Последнее редактирование: Декабрь 22, 2014, 09:09 от Alexu007 » Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #29 : Декабрь 22, 2014, 14:48 »

Читаем внимательно про модели и представления QAbstractItemModel/QItemDelegate/QTableView. И не надо писать какие то глупости.
QTableWidget служит для вывода небольшого объема простых данных.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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