crossplatform.ru

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

3 страниц V  < 1 2 3 >  
Ответить в данную темуНачать новую тему
> Пропадают иконки в таблице., После разворачивания из трея.
abc
  опции профиля:
сообщение 17.3.2011, 21:27
Сообщение #11


Участник
**

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

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




Репутация:   4  


я только к тому говорю, что баги нет, если QTableWidgetItem в ячейке есть, scrollToItem отработает. У тебя там виджет, ты и пролетаешь. Может быть, сподручно установить и итем, и виджет в одну ячейку.

Цитата(RazrFalcon @ 17.3.2011, 18:08) *
QTableWidgetItem* Item = new QTableWidgetItem();
Item->tableWidget()->setCellWidget(i, 0, removeButtons[i]);


в данном коде итем не принадлежит никакой таблице, а ты требуешь у него указатель на неё. что он может тебе предложить?

Зачем наследовал QToolButton?

Цитата(RazrFalcon @ 26.2.2011, 15:49) *
enum { NumDigitButtons = 1000 };
Button *removeButtons[NumDigitButtons];

Зачем enum? зачем массив, а не какой-нибудь контейнер, типа QList?

Цитата(RazrFalcon @ 25.2.2011, 21:04) *
if (onlynames_checkBox->checkState()==Qt::Checked)
Item->setText(QString(allFiles.at(i).fileName()));
if (onlynames_checkBox->checkState()==Qt::Unchecked)
Item->setText(QString(allFiles.at(i).absoluteFilePath()));

второй if меняешь на else, и код становится короче и понятнее
плюс у чекбокса есть метод isChecked()

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


Zombie Mod
*****

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

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




Репутация:   212  


QList - уже :lol:
На счет checkBox - сделаю. Это же не финальная версия, я пока просто тестю.

>>Может быть, сподручно установить и итем, и виджет в одну ячейку.
Это как? Лэйбл с иконкой и текстом? Но это же тоже виджет. А мне нужна возможность удаления строк. Вот и все.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
abc
  опции профиля:
сообщение 17.3.2011, 21:40
Сообщение #13


Участник
**

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

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




Репутация:   4  


имею в виду, чтоб подзасунуть в одну ячейку пустой QTableWidgetItem* и туда же твой виджет... если так можно, будет скролить к этой ячейке... но это, в общем, к делу-то не относится - решаем, почему кнопки у тебя убегают. Почему?) кнопки могут убежать, потому что они стёрлись из памяти, другого выхода у них нет

что за цикл в digitClicked()?


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


Zombie Mod
*****

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

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




Репутация:   212  


>>что за цикл в digitClicked()?
после удаления строки, кнопки теряют порядок (1 2 5 8 и тд.), по этому я их пересоздаю. Другого способа не придумал...

Решением может быть:
1) другой способ вообще, я про удалении строк
2) контекстное меню для QTableWidget, которого нет =(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
abc
  опции профиля:
сообщение 17.3.2011, 21:50
Сообщение #15


Участник
**

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

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




Репутация:   4  


так ведь ты не удаляешь из removeButtons[i] кнопку, удали и вот тебе порядок
конечно, пересоздавать все кнопки это анархия

зачем передаешь слот:
removeButtons[i] = createButton("Del", SLOT(digitClicked()),i);
соедини сигнал clicked() кнопки и этот слот при создании кнопки

Сообщение отредактировал abc - 17.3.2011, 22:05
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 17.3.2011, 21:59
Сообщение #16


Zombie Mod
*****

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

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




Репутация:   212  


Цитата(abc @ 17.3.2011, 20:50) *
так ведь ты не удаляешь из removeButtons[i] кнопку, удали и вот тебе порядок
конечно, пересоздавать все кнопки это анархия

Понял, ступил. Поправил.
Но проблема то зарыта в трее, если так листать, то все норм, а вот если свернуть прогу в трей и нажимать по иконке, по нажатию переходит на следующую строку, рэндомную, то происходит это исчезание.

А еще может быть что то в духе:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
abc
  опции профиля:
сообщение 17.3.2011, 22:14
Сообщение #17


Участник
**

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

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




Репутация:   4  


я не понимаю твоё описание, по пунктам опиши действия подробно

и что значит "может быть что-то в духе"?

где код рандомного перехода?

Сообщение отредактировал abc - 17.3.2011, 22:25
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 17.3.2011, 22:28
Сообщение #18


Zombie Mod
*****

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

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




Репутация:   212  


Цитата(abc @ 17.3.2011, 21:14) *
я не понимаю твоё описание, по пунктам опиши действия подробно

1) Программа заполняет таблицу списком изображений. Запускается свернутой в трей.
2) По нажатии на иконке в трее происходит переход на следующую строку в таблице.
3) Разворачиваем из трея и видим то, что половина кнопок пропала.

Если не сворачивать в трей и нажимать по иконке в трее - тоже будет листать таблицу, но иконки пропадать не будут. Листает в перемешку, а не последовательно.


Цитата(abc @ 17.3.2011, 21:14) *
и что значит "может быть что-то в духе"?
Имеется в виду, что то что на скриншоте показано - случается иногда, из-за того что в первой колонке кнопки.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
abc
  опции профиля:
сообщение 17.3.2011, 22:35
Сообщение #19


Участник
**

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

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




Репутация:   4  


Цитата(RazrFalcon @ 17.3.2011, 22:28) *
По нажатии на иконке в трее происходит переход на следующую строку в таблице.


Цитата(RazrFalcon @ 17.3.2011, 22:28) *
Листает в перемешку, а не последовательно.


так по какому закону листает-то? рандом? код дай

Цитата(RazrFalcon @ 17.3.2011, 22:28) *
Разворачиваем из трея и видим то, что половина кнопок пропала.

которая половина? какая закономерность?

про скриншот всё равно не понял.. я же не знаю чем "обычно" отличается от "иногда".. какое поведение нормальное, а какое на скриншоте
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 17.3.2011, 22:50
Сообщение #20


Zombie Mod
*****

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

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




Репутация:   212  


Сам запутался и людей запутал :lol:
Решил пойти по пути наименьшего сопротивления.
Сделал QList<QLabel *>, каждому присвоил иконку. Затем их впихнул в 1-й столбец. Сделал обработчик нажатия, ака cellClicked(int,int).
Потом в самом слоте смотрим: если нажато по 1-у столбцу - удаляем строку, если не по первому - ничего не делаем.
Функции нужные выполняет.
Но теперь QLabel пропадает :blink:

>>которая половина? какая закономерность?
не ровно половина, но где то посредине, обычно. Я бы сказал что один раз пропадает, к примеру, верхняя, то во второй пропадет нижняя, вот так по переменно. Если долго клацать - пропадают все.
Главное: пропадает только когда свернуто в трей.

Так как сейчас обрабатывается нажатие на таблицу, а не кнопку, то после клика по "пустому месту", где должна быть иконка, снова появляются все иконки.

Обработчик трея.
Раскрывающийся текст
void WallWindow::iconActivated(QSystemTrayIcon::ActivationReason reason)
{
    if (reason==3 || reason==2)
        set_image();
}

int WallWindow::set_image()
{
    if (row_num!=0)
    {
        number=row_num;
        order_comboBox_currentIndexChanged("Linear");
    }
    else number=rand_numbers.first();

    if (order_comboBox->currentText()=="Linear" && row_num==0)
    {
        number=linear_list.first();
        qDebug()<<"Set image:"<<allFiles.at(number).absoluteFilePath();
        processStart("/desktop/gnome/background/picture_filename",
                     allFiles.at(number).absoluteFilePath());
        linear_list.removeFirst();
    }
    else
    {
        qDebug()<<"Set image:"<<allFiles.at(number).absoluteFilePath();
        processStart("/desktop/gnome/background/picture_filename",
                     allFiles.at(number).absoluteFilePath());
        if (row_num==0) rand_numbers.removeFirst();
    }

    tableWidget->scrollToItem(tableWidget->item(number,1),QAbstractItemView::PositionAtTop);
    tableWidget->horizontalScrollBar()->setValue(0);
    trayIcon->setToolTip("Now: "+allFiles.at(number).fileName());
    if (rand_numbers.count()==0) rand_numbers=create_randlist();
    if (linear_list.count()==0) create_randlist();

    row_num=0;
    return 0;
}


Сообщение отредактировал RazrFalcon - 17.3.2011, 22:52
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




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