crossplatform.ru

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

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
> Как сохранить расположение столбцов в QTableWidget?
abc
  опции профиля:
сообщение 5.4.2011, 12:40
Сообщение #11


Участник
**

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

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




Репутация:   4  


конструктор базового класса:
QHeaderView::QHeaderView ( Qt::Orientation orientation, QWidget * parent = 0 )
нужно задавать Qt::Orientation при создании
тебе нужно написать свой конструктор:
h.
public: 
header(Qt::Orientation orientation, QWidget * parent = 0);

cpp.
header::header (Qt::Orientation orientation, QWidget * parent) 
                      : QHeaderView(orientation, parent) //инициализация базового класса
{
}

тогда в MainWIndow:
MainWindow::MainWindow
{
      ui->tableView->setHorizontalHeader(new Header(Qt::Horizontal)) //если это горизонтальный QHeaderView
}


Сообщение отредактировал abc - 5.4.2011, 12:41
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 5.4.2011, 12:54
Сообщение #12


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Ну вроде ясно, только как теперь отловить перемещение?

.h
class header : public QHeaderView
{
    Q_OBJECT

public:
    header(Qt::Orientation orientation, QWidget * parent = 0);

private slots:
    void sectionMoved ( int logicalIndex, int oldVisualIndex, int newVisualIndex );
};

.cpp
header::header (Qt::Orientation orientation, QWidget * parent)
                      : QHeaderView(orientation, parent)
{

}

MainWindow::MainWindow()
{
      table->setHorizontalHeader(new header(Qt::Horizontal));
}

void header::sectionMoved(int logicalIndex, int oldVisualIndex, int newVisualIndex)
{
    qDebug()<<logicalIndex;
}

В консоли пусто.

Сообщение отредактировал RazrFalcon - 5.4.2011, 12:55
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
abc
  опции профиля:
сообщение 5.4.2011, 13:04
Сообщение #13


Участник
**

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

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




Репутация:   4  


соедини сигнал sectionMoved со своим слотом void header::sectionMoved

наследоваться-то было незачем

можно было создать слот в MainWindow и соединить его с сигналом sectionMoved объекта, возвращаемого tableView->horizontalHeader()

Сообщение отредактировал abc - 5.4.2011, 13:08
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 5.4.2011, 13:11
Сообщение #14


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Капец!
connect(table->horizontalHeader(),SIGNAL(sectionMoved(int,int,int)),this,SLOT(sectionMoved(int,int,int)));
Работает!
Я совершенно не знал что так можно.

Проблему я решил, ладно.
Но про наследование так ничего и не понял. Как тоже самое сделать при помощи наследования?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
abc
  опции профиля:
сообщение 5.4.2011, 13:29
Сообщение #15


Участник
**

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

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




Репутация:   4  


наследование здесь бессмысленно.
вот если бы ты хотел переопределить какой-то виртуальный метод, но такого метода нет.
боюсь дать раздражающий совет, но вот книжка, которую и я в данный момент читаю. она мне очень многие моменты объясняет, разные тонкости c++:
http://valera.asf.ru/cpp/book/c00.html
подробные понятные примеры
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 5.4.2011, 14:04
Сообщение #16


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Спасибо, почитаю.
"Раздражающим", совет был бы если я "все знал" или ЧСВ зашкаливал. :lol:
А так я точно знаю, что ничего не знаю.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
abc
  опции профиля:
сообщение 5.4.2011, 14:42
Сообщение #17


Участник
**

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

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




Репутация:   4  


я, может быть, понимаю, почему ты ринулся в практику, не прочувствовав теорию. потому что, блин, эту теорию без практики фиг прочувствуешь! я сам еле-еле осилил первую книгу по с++, чуть не на каждом шаге я задавался вопросом "а зачем это надо? где, блин, пример из жизни?!"... тут определённо нужно совмещать чтение теории с практикой.. сейчас я теорию читаю с удовольствием.. теперь вместо тех вопросов у меня в голове появляется "о, так вот в чём тут дело! о, вот как оно было лучше!"... и по поводу книжки - там даже в первых разделах я столкнулся с новыми знаниями, не обходи стороной знакомые разделы
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 5.4.2011, 18:17
Сообщение #18


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Самый простой способ сохранить положение, это банальное
bool QHeaderView::restoreState ( const QByteArray & state )
QByteArray QHeaderView::saveState () const


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

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


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




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