crossplatform.ru

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

3 страниц V   1 2 3 >  
Ответить в данную темуНачать новую тему
> QTabWidget Вопрос 2
edwardoid
  опции профиля:
сообщение 3.5.2008, 15:45
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 171
Регистрация: 1.5.2008
Из: Ереван, Армения
Пользователь №: 164

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




Репутация:   0  


Опять проблема с QTabWidget. Мне нужно, чтобы класс главного окна понимал когда я выбрал один из таб из QTabWidget.
Т.е.
если 3 вкладки и я сейчас работаю в первой вкладке, то выбрав вторую вкладку мне надо чтобы шел сигнал и я мог его обработать.

Что тут неправильно:

connect(tabs,SIGNAL(currentChanged()),this,SLOT(setCurrent())); // tabs - QTabWidget 

...

void MainWindow::setCurrent()
{
     currentPage=tabs->currentWidget(); // curentPage - переменная для хранения текущей страницы.

}


в итоге вроде при выборе новой вкладки, переменная текущей вкладки, должна измениться, не так ли?
Причина редактирования: используйте тэг code (есть кнопочка)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 3.5.2008, 15:59
Сообщение #2


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

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

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




Репутация:   94  


QWidget * QTabWidget::currentWidget () const

т.е.
currentPage должно быть типа QWidget *
у тебя так?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
edwardoid
  опции профиля:
сообщение 3.5.2008, 16:03
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 171
Регистрация: 1.5.2008
Из: Ереван, Армения
Пользователь №: 164

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




Репутация:   0  


Да так. проблема не в том.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 3.5.2008, 16:17
Сообщение #4


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

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

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




Репутация:   94  


проверь в слот заходит?
диалог сообщения какой нибудь в начало слота воткни.
и к стати доработай слот так:
setCurrent( int index)
{
    // Для тестирования слота
    QMessageBox::information(this, tr("Слот"), tr("Текущая индекс: ")+QString::number(index),    QMessageBox::Ok);
....
}

тогда видеть будешь, что происходит
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 3.5.2008, 16:39
Сообщение #5


Мастер
******

Группа: Модератор
Сообщений: 3291
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


Если быть точнее, то нужно сделать так:
connect(tabs,SIGNAL(currentChanged( int)),this,SLOT(setCurrent( int))); // tabs - QTabWidget 

...

void MainWindow::setCurrent( int nIndex)
{
     // currentPage=tabs->currentWidget(); // curentPage - переменная для хранения текущей страницы.
     // Для тестирования слота
    QMessageBox::information(this, tr("Слот"), tr("Текущий индекс: ")+QString::number( nIndex),    QMessageBox::Ok);
}
Где nIndex, номер выбранной тобой вкладки.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 3.5.2008, 16:48
Сообщение #6


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

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

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




Репутация:   94  


вообще я в функции connect всегда указываю тип параметра сигнала, но, возможно, это не обязательно
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
edwardoid
  опции профиля:
сообщение 3.5.2008, 17:14
Сообщение #7


Участник
**

Группа: Участник
Сообщений: 171
Регистрация: 1.5.2008
Из: Ереван, Армения
Пользователь №: 164

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




Репутация:   0  


connect(tabs,SIGNAL(currentChanged(int)),this,SLOT(setCurrent(int)));
connect(action_Select_all,SIGNAL(triggered()),currentPage->edit,SLOT(selectAll()));

...

void Prog::setCurrent(int nIndex)
{
    currentPage=qobject_cast<Page*>(tabs->widget(nIndex));
}



Page - класс содержания вкладок, там есть QTextEdit *edit

Почему когда action_Select_all посылает сигнал triggered(), операция selectAll() выполняется не для текущей страницы?
Причина редактирования: используйте тэг code (есть кнопочка)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 3.5.2008, 17:23
Сообщение #8


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

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

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




Репутация:   94  


Цитата(' date='3.5.2008, 21:14) *
выполняется не для текущей страницы?

а для какой, закономерность есть?

я так понимаю, с предыдущим вопросм все решилось?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
edwardoid
  опции профиля:
сообщение 3.5.2008, 17:30
Сообщение #9


Участник
**

Группа: Участник
Сообщений: 171
Регистрация: 1.5.2008
Из: Ереван, Армения
Пользователь №: 164

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




Репутация:   0  


В конструкторе по дефолту делаю currentPage - 0-ую вкладку, именно с с ней и происходит selectAll().
С предыдущим вопросом да, все ок.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 3.5.2008, 17:55
Сообщение #10


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

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

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




Репутация:   94  


вобщем выкладывай код, хотябы соращенный вариант, но повторяющий твою проблему.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 6.12.2019, 9:00