crossplatform.ru

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


  Ответ в автозаполнение в QTableWidget
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
BRE Дата 23.10.2009, 19:14
  Все ясно. Возникает рекурсия, поэтому нужно блокировать сигналы на время установки элемента.
Раскрывающийся текст

#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"

mettamo Дата 23.10.2009, 18:38
  когда значение меняешь.
BRE Дата 23.10.2009, 18:27
 
Цитата(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);
}


Так когда программа падает? Когда кнопку нажимаешь или когда значение меняешь?
mettamo Дата 23.10.2009, 18:02
 
#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, 17:54
 
Цитата(mettamo @ 23.10.2009, 18:41) *
Командир не в этом дело, все ровно не пашет, запусти пожалуйста у себя Qt попробуй просто очень надо, весь инет перерыл - нет ответа.

Покажи больше кода. Создание/заполнение QTableWidget и использование.
mettamo Дата 23.10.2009, 17:41
  Командир не в этом дело, все ровно не пашет, запусти пожалуйста у себя Qt попробуй просто очень надо, весь инет перерыл - нет ответа.
BRE Дата 23.10.2009, 17:38
 
Цитата(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:32
  просто сразу же закрывается, не знаб как описать по другому

может подключить надо что-то?
BRE Дата 23.10.2009, 17:29
 
Цитата(mettamo @ 23.10.2009, 18:27) *
вот устанавливается Item но все равно не работает

Не работает как: программа падает?
mettamo Дата 23.10.2009, 17:27
 
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 но все равно не работает
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 5.7.2025, 5:48