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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 48 49 [50]
736  Qt / Пользовательский интерфейс (GUI) / Re: Не ловится сигнал currentRowChanged у selectionModel. Почему? : Июль 07, 2008, 16:45
а на самом деле синала с такими параметрами нет, что подтверждается руганью ...
есть сигнал с такими параметрами:

void QItemSelectionModel::currentRowChanged ( const QModelIndex & current, const QModelIndex & previous )

Ну currentRowChanged (const QModelIndex & current) у меня после экспериментов осталось, пробовал и currentRowChanged ( const QModelIndex & current, const QModelIndex & previous ). Кстати, ругани на данное объявление слота почему-то у меня нет. Только одно предупреждение что параметр внутри функции не используется (он действительно в этом упрощенном примере не используется)

Цитировать
Лог компиляции если один параметр у currentRowChanged() в объявлении слота

Сборка (make)...
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtXml -I/usr/include/qt4/QtXml -I/usr/include/qt4 -Ibuild -Ibuild -o build/mainwindow.o src/mainwindow.cpp
src/mainwindow.cpp:65: предупреждение: unused parameter 'index'
g++  -o bin/qtwinform build/main.o build/mainwindow.o build/moc_mainwindow.o    -L/usr/lib -lQtXml -lQtGui -lQtCore -lpthread


В общем, сделал. Наложились две ошибки - слот описан как обычный метод, и currentRowChanged() надо было прописывать с двумя параметрами.

Вопрос: Почему при компиляции, если нужного лота нету, нет никаких оповещений? Как сделать чтоб предупреждения были? Крутить moc?
 
737  Qt / Пользовательский интерфейс (GUI) / Re: Не ловится сигнал currentRowChanged у selectionModel. Почему? : Июль 07, 2008, 16:32
О, кажись понял, ща попробую. Видимо не перехватывается из-за того что метод recordview_select() объявлен не как слот... Он у меня раньше обычной функцией был...

UPD Не, всеравно не работает.
738  Qt / Пользовательский интерфейс (GUI) / Re: Не ловится сигнал currentRowChanged у selectionModel. Почему? : Июль 07, 2008, 15:38
Вот, упростил донельзя. Пробовал по разному объявлять коннект, рабочего объявления не нащупал.

По примеру - при движении засветки в консоль должны выводиться строки In function recordview_select().

Архив проекта приаттачен.
739  Qt / Пользовательский интерфейс (GUI) / Re: Не ловится сигнал currentRowChanged у selectionModel. Почему? : Июль 07, 2008, 15:07
>> Вот и все впринципе. При компилсяции ошибок и варнингов нет.

Мистика! Улыбающийся
А можно прикрепить упрощенный вариант Вашего проекта?

Щас попробую какнить упростить...
740  Qt / Пользовательский интерфейс (GUI) / Re: Не ловится сигнал currentRowChanged у selectionModel. Почему? : Июль 07, 2008, 14:27
Возникает вопрос:  ты сам представляешь что хочешь сделать?
Для ответа мало информации.
recordview ?
tabmod ?
...
...
Одни вопросы

Все сделано примитивно.

recordview - это объект класса QListView, размещенный на форме окна в QtDesigner.
tabmod - это модель данных, которую я вставляю в данный QListView (это видно по коду).

Код загрузки модели в recordview и создание связки сигнал-слот размещен в конструкторе объекта mainwindow класса QMainWindow. Первая команда конструктора -  setupUi(this);, затем код первого поста.

Создание окна происходит в main.cpp кодом

Код:
int main(int argc, char ** argv)
{
  QApplication app( argc, argv );
  mainwindow win;
  win.show();
  return app.exec();
}

Вот и все впринципе. При компилсяции ошибок и варнингов нет.
741  Qt / Пользовательский интерфейс (GUI) / Не ловится сигнал currentRowChanged у selectionModel. Почему? : Июль 07, 2008, 13:01
Здравствуйте!

Долблюсь вот с перехватом движения "засветки" курсорными клавишами в QListView. То есть, нужно вызывать функцию в момент, когда синенькая "засветка" переместилась на другую строку.

Делаю так. У меня есть класс mainwindow, в инициализации которого есть такой код

Код:
 // Загрузка модели таблицы записей в представление для QListView
 recordview->setModel(tabmod);
 
 // Поддержка обработки движения стрелок в таблице записей
 // Обяательно размещать после загрузки модели, т.к.
 // this signal will not be emitted when the item model is reset.
 connect(recordview->selectionModel(),
         SIGNAL(currentRowChanged (const QModelIndex&, const QModelIndex&)),
         this, 
         SLOT(recordview_select(const QModelIndex &index)));

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

Думал, что может быть объект приемника нужно указывать не this, но у меня там же нормально срабатывает перехват других сигналов, типа

Код:
     a = new QAction(tr("&Print..."), this);
     a->setShortcut(QKeySequence::Print);
     connect(a, SIGNAL(triggered()), this, SLOT(filePrint()));
     menu->addAction(a);

Как же отловить сигнал currentRowChanged для selectionModel объекта типа QListView? Что делаю не так?
742  Qt / Пользовательский интерфейс (GUI) / Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю. : Июнь 18, 2008, 18:55
Цитировать
Это значит, я у себя в Qt либе что-то исправляю. И у меня интерфейс начинает работать согласно исправлениям. А когда я отдам прогу пользователям, что произойдет? У них будет работать по-другому? Пользователи тоже должны будут устанавливать исходники, патчить Qt либу, потом пересобирать ее чтобы получился аналогичный результат???
да.

Ну и кому такая прога нужна будет??? Извините за то что щас скажу (я хорошо отношусь и к этому форуму, и к вам как спецу и модератору, и к тому что вы не поленились и патчик прислали, и к тому что на форуме хорошая творческая атмосфера, причем это заслуга и модераторов и пользователей, за это все спасибо). Но более уродскую залипуху придумать слоооожно. Сделать так - значит обеспечить, что программой вообще никто не будет пользоваться. Когда я натыкаюсь на такие программы, которые хренпаймешь как устанавливать надо, которые требуют определенной версии либ, докачки чего-то с CPAN, или как в XMMS, патчик на ядро просят наложить, или еще что-то дикое, меня это вымораживает! Я готов плюнуть разработчику в лицо и сказать - больше непиши, иди на стройку работать, тупая скатина! Что тебе мешало положить перловые модули нужных версий рядом со своими скриптами? Этож как тормозится развитие линуха, что люди не могут просто программу установить. Никакого желания так ёбстись с устновкой программ у нормального человека возникнуть не может! Значит, эта тупорылая тварь написала свое поделие не для людей, а для каких-то блин... биороботов в вакууме! Пусть такому разработчику космонавты на голову насрут! Уродцу этому моральному.. Пусть кажый день срут, пока не поумнеет!


но есть ещё один аспект - если с патчем будет работать как требуется, на его основе можно сделать воркэроунд...

А вот тут поподробнее, что имеется в виду под "воркэроунд"?
743  Qt / Пользовательский интерфейс (GUI) / Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю. : Июнь 17, 2008, 22:15
попробуй патчик в аттаче

Спасибо конечно, но

надеюсь, не пугает, что придётся пересобрать модуль гуи ) /* make sub-src */

Вообще-то пугает. Не понимаю смысл сего действия! Это значит, я у себя в Qt либе что-то исправляю. И у меня интерфейс начинает работать согласно исправлениям. А когда я отдам прогу пользователям, что произойдет? У них будет работать по-другому? Пользователи тоже должны будут устанавливать исходники, патчить Qt либу, потом пересобирать ее чтобы получился аналогичный результат???
744  Qt / Пользовательский интерфейс (GUI) / Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю. : Июнь 17, 2008, 22:05
Код:
treeView->resizeColumnToContents(0);
Тоже думал, что это поможет - однако нет.
З.Ы 4.4.1-20080414

Може, что неправильно делаешь? Оно помогает только _после_ вызова. То есть, изменилось что на экране - надо дергать resizeColumnToContents(). И так каждый раз. У меня работает на Qt 4.3.0.
745  Qt / Пользовательский интерфейс (GUI) / Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю. : Июнь 17, 2008, 17:11
treeView->header()->setResizeMode(QHeaderView::ResizeToContents)

Нет, не помогает. Вроде, по описанию - ResizeToContents то что нужно. Но растягивание ширины столбца всеравно ограничивается шириной объекта. И прокрутка не появляется.

В этом режиме ResizeToContents еще и невозможно мышкой расширить столбец за пределы оъекта, т.к. данный режим отменяет Interactive. Пропробовал режим Stretch, но это тоже не то - он просто расширяет автоматом столбец с деревом если есть свободное пространство.


Во, нашел. Надо делать

Код:
treeView->resizeColumnToContents(0);

но этот метод нужно вызывать при любом интерактивном изменении дерева. Сейчас повесил на слот click(), работает, но это не то что нужно (например столец не расширяется при навигации клавиатурой).

Попробовал засунуть вызов в слоты update() и в repaint(), но эти слоты при интерактивном изменении не вызываются. Попробовал даже вначале программы включить разрешение вызова udate()

Код:
treeView->setUpdatesEnabled(true);

но тоже толку нет.


Вопрос - какой слот надо использовать в QTreeView, чтобы он вызывался при любом визуальном и программном изменении дерева?
746  Qt / Пользовательский интерфейс (GUI) / QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю. : Июнь 16, 2008, 21:47
Здравствуйте!


Вот тут только что обнаружил неприятную особенность QTreeView - этот объект не хочет горизонтально скроллироваться, чтобы видеть концы длинных строк.

Вот скрин



Видно, что прокрутка не сдвигается (она почему-то шириной в весь виджет). А концов строк невидно. И это еще маленькое дерево, а если веток будет больше, то вообще неясно как работать. Кстати, вертикальная прокрутка работает нормально.

На скрине запечатлен момент, когда horisontalScrollBarPolicy=ScrollBarAlwaysOn. Если это свойство ставить в ScrollBarAsNeeded, то при сужении области объекта, горизонтальная прокрутка автоматически появляется тогда, когда она уже не нужна. Т.е. "длинные" ветки остались справа, их уже не видно. И в этот момент появляется прокрутка. Которая, в общем то, прокручивает очень мало - то что остатся справа увидеть невозможно.

Все прочие параметры прокрутки оставлены те, которые выставляются при добавлении QTreeView на форму в дезигнере. Я, конечно, поигрался с разными параметрами, но результата не достиг.


Вопрос - можно ли сделать нормальную горизонтальную прокрутку в объекте QTreeView, так, чтобы были видны полностью длинные строки дерева? Как настроить?
747  Qt / Общие вопросы / Структура приложения, с главным окном, подобным mail-клиенту. Как лучше сделать? : Июнь 09, 2008, 16:47
Здравствуйте господа!

Делаю сейчас небольшое приложение на QT4. Главное окно состоит из трех областей, подобных любому классическому mail-клиенту. То есть состоит окно из

- Дерева папок (слева)
- Списка записей в текущей выбраной папке (справа сверху)
- Текста текущей выбраной записи (справа снизу)

Код:
+--------+---------------------+
| Дерево | Запись 1            |
| папок  |#Запись#2############|
|        | Запись 3            |
|        | Запись 4            |
|        +---------------------+
|        | Это текст записи 2  |
|        |                     |
|        | Всем привет! Вот    |
|        | такая запись        |
|        | с текстом           |
+--------+---------------------+

В данный момент реализовал дерево папок (считывается из XML файла в DOM, потом преобразуется в Item как в примере Editable Tree Model).

Теперь нужно каким-то образом при выборе ветки, содержащей записи, показывать список этих записей (справа сверху). Заголовки записей (название, дата создания, ссылка на файл) хранятся в том же XML дереве. А текст записей лежит в отдельном файле для каждой записи.

И вот вопрос - как лучше реализовать данную структуру на уровне объектов? Дерево планируется большое, записей много, ~50Мб текстовой информации, размер текста каждой записи ~20-50Кб текста в виде rich-форматирования.


Я планирую сделать так

Сейчас есть объект "model", включающий в себя ссылку на корневой Item-объект дерева папок. И есть куча Item-объектов дерева папок. Они храняться все время работы программы.

В классе Item-объектов дерева я сделаю еще одно свойство - ссылку на объект класса "tablemodel". Можно ли это сделать? Сможет ли вид отобразить такую модель с "лишними" свойствами? "Tablemodel" в свою очередь является моделью таблицы записей, хранимых в папке.

"Tablemodel" в свою очередь является моделью таблицы записей, хранимых в папке. При выборе папки, в которой есть записи, воткну соответсвующий объект "tablemodel" в вид таблицы записей (справа сверху). Ну и динамически подгружу текст первой записи, и покажу его справа внизу.


Правильна ли последовательность действий? Или в таком приложении надо делать структуру и взаимодействие объектов как-то по-другому? Просто я слабо занаю как C++ так и QT, и не хотелось бы переделывать проект из-за того, что изначально был выбран не тот подход к конструкции классов.
748  Qt / Общие вопросы / Re: Книги (статьи) по QT : Июнь 06, 2008, 20:24
http://archival.ru/?q=taxonomy/term/16

Есть книги:
Cross-Platform GUI Programming with wxWidgets
Programming with gtkmm
Шлее М. - Qt4. Профессиональное программирование на C++

p.s. сайт переодически пополняется...

Там дан линк

Шлее М. - Qt4. Профессиональное программирование на C++
http://slil.ru/25820142

Выкачивал три раза, первый раз - 2MB и разрыв (час качалось), докачка не поддерживается. Второй раз - 15MB и разрыв (три часа качалось). В третий раз - докачалось до конца, но архив битый. В книге 830 страниц, из архива вытянулось 680. Четвертый раз качать не стал.
749  Qt / Пользовательский интерфейс (GUI) / Re: QTextEdit - как сделать возможность добавления вложенных списков? : Май 23, 2008, 15:38
Складывается подозрение, что в рунете нет людей, которые знают как в редакторе делать вложенные списки... Серьезно никто не знает??
750  Qt / Пользовательский интерфейс (GUI) / QTextEdit - как сделать возможность добавления вложенных списков? : Май 22, 2008, 18:48
Здравствуйте!


Вот вопрос такой возник. Делаю простой, встроенный в приложение, текстовый редактор с возможностью всякой разметки текста. Сейчас столкнулся вот с чем. Не могу понять, как сделать возмножным добавлять или переформатировать выделенный текст в виде вложенного списка?

Просто преобразовать абзацы в пронумерованый список или список с точечками я могу. Это у меня делается так - есть область edittextarea класса QTextEdit, и две кнопки - в список 123 editnumericlist и в список с точечками editdotlist.

Код:
void DialogImpl::format_to_list(QTextListFormat::Style setformat)
{
 // Создание форматирования
 QTextListFormat format;
 format.setStyle(setformat);

 // Если строки выбраны
 if(edittextarea->textCursor().hasSelection())
  {
   // Форматирование
   edittextarea->textCursor().createList(format);
  }
 else
  {
   // Вставляется первый пустой пункт
   edittextarea->textCursor().insertList(format);
  }

 // Выравнивание прокрутки чтоб курсор был виден если он уехал вниз
 edittextarea->ensureCursorVisible();
}


// Форматирование в нумерованный список
void DialogImpl::on_editnumericlist_clicked(void)
{
 format_to_list(QTextListFormat::ListDecimal);
}


// Форматирование в список с точечками
void DialogImpl::on_editdotlist_clicked(void)
{
 format_to_list(QTextListFormat::ListDisc);
}

Если сделать в тексте два списка, один выделить, и вставить в пункт другого, то пункты вставятся на том же уровне вложенности. А нужно, чтобы образовался подуровень вложенности. Как это сделать?
Страниц: 1 ... 48 49 [50]

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