Russian Qt Forum
Ноябрь 24, 2024, 12:41 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Перелистывание?  (Прочитано 3363 раз)
Erik
Гость
« : Май 13, 2007, 07:33 »

Народ, объясните, как вообще можно сделать функцию, чтоб например при нажатии кнопки (QToolButton) показывалась другая картинка из рабочей папки. Собсна как next и previous. Во всяких image viewer'ах.
Если можно поточнее, а то я ваще не врублюсь как сделать. Спасибо.
Записан
izoomer
Гость
« Ответ #1 : Май 13, 2007, 09:59 »

Цитата: "Erik"
Народ, объясните, как вообще можно сделать функцию, чтоб например при нажатии кнопки (QToolButton) показывалась другая картинка из рабочей папки. Собсна как next и previous. Во всяких image viewer'ах.
Если можно поточнее, а то я ваще не врублюсь как сделать. Спасибо.

QDirModel тебе поможет.
Код:

        QString rooPath = "" ; // папка с файлами с картинками
        QDirModel * modelDirs= new QDirModel(QStringList(),QDir::Files, QDir::Name);
        rootIndex = modelDirs->index(rootPath);

enum QDirModel::Roles  хранить все пути и имена файлов .... при нажатии кнопок Prev Next делаем перемещение по модели
Код:

selectPrevDir()
{
int iRow = listDirs->currentIndex().row();
if ( iRow > 0 )
{
listDirs->setCurrentIndex(modelDirs->index( iRow - 1, 0, rootIndex ) );
}
if ( iRow == 0 )
{
listDirs->setCurrentIndex(modelDirs->index(modelDirs->rowCount(rootIndex)-1, 0, rootIndex ));
}


}

selectNextDir()
{
int iRow = listDirs->currentIndex().row();
  int curRowCount = modelDirs->rowCount(rootIndex);

if (iRow < curRowCount-1 )
{
listDirs->setCurrentIndex(modelDirs->index( iRow + 1, 0, rootIndex ) );
}
if ( curRowCount-1 == iRow )
{
listDirs->setCurrentIndex(modelDirs->index( 0, 0, rootIndex ) );
}
}


ну а через QDirModel::fileInfo( const QModelIndex & index ) можно вообще все что хочешь получить из файла.
Записан
Erik
Гость
« Ответ #2 : Май 16, 2007, 17:12 »

2izoomer
чот я все равно не врубился.Грустный
Можешь объяснить как делать?
Чо за объект rootIndex, listDirs?
Кстати у меня Qt 4.2.2.
Записан
Sergeich
Гость
« Ответ #3 : Май 16, 2007, 18:24 »

Вариант попроще:
1. С помощью QDir запихиваем имена всех файлов с картинками в QStringList imageNameList
2. Заводим переменную int currentImageIndex = 0 и рисуем картинку imageNameList[0]
3. Делаем слот, реагирующий на next (prev) что-то типа
Код:
void MainWindow::nextImage()
{
  if ( ++currenImageIndex == imageNameList.size() )
    currentImageIndex = 0;
  showImage( imageNameList[currenImageIndex] );
}
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 20.