crossplatform.ru

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

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
> автозаполнение в QTableWidget, как поместить значение в ячейку
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
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


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




RSS Текстовая версия Сейчас: 22.12.2024, 17:53