crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

mettamo
  опции профиля:
сообщение 22.10.2009, 20:48
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 43
Регистрация: 22.10.2009
Пользователь №: 1173

Спасибо сказали: 0 раз(а)




Репутация:   0  


Здрасте!

Есть пустая таблица QTableWidget

необходимо что бы по вводу значения допустим в ячейке [1,3], это же значение помещалось в ячейку [3,1]

пробовал сделать так

void MainWindow::on_TabG_cellChanged(int row,int column)
{
   ui->TabG->item(column,row)->setText(ui->TabG->item(row,column)->text());
}


но так не получается.

помогите разобраться(((
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
2 страниц V   1 2 >  
Начать новую тему
Ответов (1 - 18)
Litkevich Yuriy
  опции профиля:
сообщение 22.10.2009, 22:45
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(mettamo @ 23.10.2009, 0:48) *
но так не получается.
а что получается?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
mettamo
  опции профиля:
сообщение 22.10.2009, 23:14
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 43
Регистрация: 22.10.2009
Пользователь №: 1173

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 22.10.2009, 23:45) *
Цитата(mettamo @ 23.10.2009, 0:48) *
но так не получается.
а что получается?

прога слетает, вообщем нечего нечего не получается
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 23.10.2009, 8:14
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(mettamo @ 23.10.2009, 0:14) *
прога слетает, вообщем нечего нечего не получается

Так и должно быть. ;)
Если таблица пустая, то конструкция ui->TabG->item(column,row) будет возвращать 0.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
mettamo
  опции профиля:
сообщение 23.10.2009, 14:05
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 43
Регистрация: 22.10.2009
Пользователь №: 1173

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(BRE @ 23.10.2009, 9:14) *
Цитата(mettamo @ 23.10.2009, 0:14) *
прога слетает, вообщем нечего нечего не получается

Так и должно быть. ;)
Если таблица пустая, то конструкция ui->TabG->item(column,row) будет возвращать 0.


А как ее заполнить?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zamnach
  опции профиля:
сообщение 23.10.2009, 14:21
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 36
Регистрация: 18.7.2008
Пользователь №: 239

Спасибо сказали: 0 раз(а)




Репутация:   0  


в условиях вашей задачи не описано требуемое поведение проги для случая (column==row)
+ таблица может быть неквадратной, тоже нужны проверки
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
mettamo
  опции профиля:
сообщение 23.10.2009, 14:31
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 43
Регистрация: 22.10.2009
Пользователь №: 1173

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(zamnach @ 23.10.2009, 15:21) *
в условиях вашей задачи не описано требуемое поведение проги для случая (column==row)
+ таблица может быть неквадратной, тоже нужны проверки


таблица квадратная
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
mettamo
  опции профиля:
сообщение 23.10.2009, 17:02
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 43
Регистрация: 22.10.2009
Пользователь №: 1173

Спасибо сказали: 0 раз(а)




Репутация:   0  


Думал это простой вопрос, а никто ответить не может.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 23.10.2009, 17:07
Сообщение #9


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(mettamo @ 23.10.2009, 18:02) *
Думал это простой вопрос, а никто ответить не может.

Для того, что бы получить item из QTableWidget, вначале нужно его установить QTableWidget::setItem.
Если элемент не установлен, то метод QTableWidget::item будет возвращать 0.

Теперь посмотри на свой код:
ui->TabG->item(column,row)->setText(ui->TabG->item(row,column)->text());

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
mettamo
  опции профиля:
сообщение 23.10.2009, 17:27
Сообщение #10


Студент
*

Группа: Участник
Сообщений: 43
Регистрация: 22.10.2009
Пользователь №: 1173

Спасибо сказали: 0 раз(а)




Репутация:   0  


void MainWindow::on_TableGraf_cellChanged(int row, int column)
{
    ui->TableGraf->item(row,column)->setBackgroundColor(Qt::green);
    QTableWidgetItem *newItem = new QTableWidgetItem(QTableWidgetItem::UserType);
    ui->TableGraf->setItem(column,row, newItem);
    ui->TableGraf->item(column,row)->setText(ui->TableGraf->item(row,column)->text());


}


вот устанавливается Item но все равно не работает
Причина редактирования: используй тэг code
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 23.10.2009, 17:29
Сообщение #11


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(mettamo @ 23.10.2009, 18:27) *
вот устанавливается Item но все равно не работает

Не работает как: программа падает?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
mettamo
  опции профиля:
сообщение 23.10.2009, 17:32
Сообщение #12


Студент
*

Группа: Участник
Сообщений: 43
Регистрация: 22.10.2009
Пользователь №: 1173

Спасибо сказали: 0 раз(а)




Репутация:   0  


просто сразу же закрывается, не знаб как описать по другому

может подключить надо что-то?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 23.10.2009, 17:38
Сообщение #13


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(mettamo @ 23.10.2009, 18:32) *
может подключить надо что-то?

Точно, внимательность. ;)

void MainWindow::on_TableGraf_cellChanged(int row, int column)
{

 ui->TableGraf->item(row,column)->setBackgroundColor(Qt::green);    // !!! Вот здесь элемента еще нет и item вернет 0.
                                                        // !!! Соответственно ты по нулевому указателю метод вызываешь.

 QTableWidgetItem *newItem = new QTableWidgetItem(QTableWidgetItem::UserType);
 ui->TableGraf->setItem(column,row, newItem);
 ui->TableGraf->item(column,row)->setText(ui->TableGraf->item(row,column)->text());


}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
mettamo
  опции профиля:
сообщение 23.10.2009, 17:41
Сообщение #14


Студент
*

Группа: Участник
Сообщений: 43
Регистрация: 22.10.2009
Пользователь №: 1173

Спасибо сказали: 0 раз(а)




Репутация:   0  


Командир не в этом дело, все ровно не пашет, запусти пожалуйста у себя Qt попробуй просто очень надо, весь инет перерыл - нет ответа.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 23.10.2009, 17:54
Сообщение #15


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(mettamo @ 23.10.2009, 18:41) *
Командир не в этом дело, все ровно не пашет, запусти пожалуйста у себя Qt попробуй просто очень надо, весь инет перерыл - нет ответа.

Покажи больше кода. Создание/заполнение QTableWidget и использование.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
mettamo
  опции профиля:
сообщение 23.10.2009, 18:02
Сообщение #16


Студент
*

Группа: Участник
Сообщений: 43
Регистрация: 22.10.2009
Пользователь №: 1173

Спасибо сказали: 0 раз(а)




Репутация:   0  


#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QColor>
#include <QTableWidgetItem>
#include "math.h"


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindowClass)
{
    ui->setupUi(this);
}

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

void MainWindow::on_pushButton_clicked()//сам QTableWidget я в QtCreatorе на форму кидаю
{ 
ui->TableGraf->setColumnCount(ui->lineEdit->text().toInt());
ui->TableGraf->setRowCount(ui->lineEdit->text().toInt());
for (int i=0;i<=ui->lineEdit->text().toInt();i++)
    {
        ui->TableGraf->setColumnWidth(i,25);
        ui->TableGraf->setRowHeight(i,25);

    }
ui->TableGraf->horizontalHeader()->setResizeMode(QHeaderView::Fixed);
}


void MainWindow::on_TableGraf_cellChanged(int row, int column)
{
    //ui->TableGraf->item(row,column)->setBackgroundColor(Qt::green);
    QTableWidgetItem *nwItem = new QTableWidgetItem(QTableWidgetItem::UserType);
    ui->TableGraf->setItem(column,row, nwItem);
    ui->TableGraf->item(column,row)->setText("h");
    //ui->TableGraf->item(column,row,new QTableWidgetItem(tr("[none]")));

}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 23.10.2009, 18:27
Сообщение #17


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(mettamo @ 23.10.2009, 19:02) *
void MainWindow::on_pushButton_clicked()//сам QTableWidget я в QtCreatorе на форму кидаю
{
ui->TableGraf->setColumnCount(ui->lineEdit->text().toInt());
ui->TableGraf->setRowCount(ui->lineEdit->text().toInt());

// Почему <=, должно быть <
for (int i=0;i <= ui->lineEdit->text().toInt();i++)
{
ui->TableGraf->setColumnWidth(i,25);
ui->TableGraf->setRowHeight(i,25);

}
ui->TableGraf->horizontalHeader()->setResizeMode(QHeaderView::Fixed);
}


Так когда программа падает? Когда кнопку нажимаешь или когда значение меняешь?

Сообщение отредактировал BRE - 23.10.2009, 18:28
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
mettamo
  опции профиля:
сообщение 23.10.2009, 18:38
Сообщение #18


Студент
*

Группа: Участник
Сообщений: 43
Регистрация: 22.10.2009
Пользователь №: 1173

Спасибо сказали: 0 раз(а)




Репутация:   0  


когда значение меняешь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 23.10.2009, 19:14
Сообщение #19


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Все ясно. Возникает рекурсия, поэтому нужно блокировать сигналы на время установки элемента.
Раскрывающийся текст

#include <QApplication>                                                                                                   
#include <QWidget>                                                                                                        
#include <QTableWidget>                                                                                                   
#include <QLayout>                                                                                                        
#include <QDebug>                                                                                                         

class Widget : public QWidget
{                            
        Q_OBJECT             
public:                      
        Widget() : QWidget( 0 )
        {                      
                QVBoxLayout *layout = new QVBoxLayout( this );
                m_table = new QTableWidget( this );
                m_table->setRowCount( 5 );
                m_table->setColumnCount( 5 );
                connect( m_table, SIGNAL( cellChanged( int, int ) ), SLOT( cellChanged( int, int ) ) );

                layout->addWidget( m_table );

                setLayout( layout );
        }

public slots:
        void    cellChanged( int row, int column )
        {
                qDebug() << "Changed item" << row << column << m_table->item( row, column );
                QTableWidgetItem *item = new QTableWidgetItem;
                item->setText( "Test" );
                m_table->blockSignals( true );
                m_table->setItem( column, row, item );
                m_table->blockSignals( false );
        }

protected:
        QTableWidget    *m_table;
};

int main( int argc, char *argv[] )
{
        QApplication app( argc, argv );

        Widget w;
        w.show();

        return app.exec();
}

#include "main.moc"

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 3.6.2025, 22:56