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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 45 46 [47] 48 49 50
691  Qt / Пользовательский интерфейс (GUI) / Как сделать маленькую кнопку? : Сентябрь 28, 2008, 16:25
Здравствуйте!


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

Я пытаюсь сделать так (кусок конструктора окна)

Код:
 ...
 QSizePolicy pls;
 pls.setHorizontalPolicy(QSizePolicy::Minimum);
 pls.setVerticalPolicy(QSizePolicy::Minimum);

 button=new QPushButton(this);
 button->setText(tr("Ok"));
 button->setSizePolicy(pls);
 ...

но кнопка всеравно растягивается. А нужно чтоб была маленькой. Я пробовал и QSizePolicy::MinimumExpanding, всеравно кнопка растягивается. Конечно, могу задать размер кнопки в точках, но это же неправильно.

Как сделать так, чтоб кнопка была только такого размера, чтоб вмещала только свою надпись?
692  Qt / Установка, сборка, отладка, тестирование / Re: Eclipse 3.4.0 - время от времени неактивен пункт компиляции. И другие вопросы. : Сентябрь 21, 2008, 18:27
Вообще я бы порекомендовал скачать последнюю версию Eclipse - Ganymed.

У меня тоже Ганимед стоит.


Цитировать
1 - возможно что у тебя в Project Explorer  просто не выделен проект. Только что проверил - если выделения нет то пункт "Build project" не активен. Я с такой проблемой не сталкивался так так у меня всегда открыт тлько один проект и я использую комбинацию  Ctrl+B  - "Build All" для сборки.

Спасибо, я теперь понял в какие моменты это происходит. Если, например, в каком-нибудь классе сделать временный метод

Код:
void anyclass::tmp(void)
{

}

он появится в проект-эксплорере в соответствующем исходнике класса. Теперь в проект-эксплорере тыкаем на этот метод мышой, в области редактирования курсор переместится на этот временный метод. Теперь его в области редактирования стираем. В проект эксплорере в это время засветка будет на файле класса. После того как стерли этот временный класс, можно заглянуть в меню Project. Пункт Build Project будет неактивный.

Проверьте у себя, пожалуста. У вас такое же поведение Эклипса?


Цитировать
2 - тоже никогда не сталкивался с таким так как если у меня что-то не сохранено, то Eclipse  перед началом сборки спросит хочу ли я сохранить такие-то изменённые файлы. У меня опции все по умолчанию. А вообще в моей версии Эклипса нужная тебе опция находится тут - General->Workspace->"Save automatically before build"

Ога, это оно!
693  Qt / Дополнительные компоненты / Re: Написал тут игрушку на досуге... : Сентябрь 15, 2008, 21:21
Самого главного в игре нет - нету правил игры. Начать рубаться в такую игру без знания  правил нереально. Когда будешь добавлять правила, обязательно напиши, что цифры уничтожаются только парами, ты про это в первом посте забыл упомянуть.

"Можно уничтожать крайние по горизонтали и налево-вверх-налево. Понятнее не могу выразить, нужно на скринах подготовить." - да, это тоже нужно прояснить, до сих пор не пойму что ты имеешь в виду...

По самой игре - игра сугубо для ностальгирующего любителя. Имеет ценность "для коллекции". Советую напрячься и довести проект до логического конца, выложить на qt-apps, и дальше заняться чем-нибудь другим, имея в багаже накопленый опыт работы с Qt либой.
694  Qt / Установка, сборка, отладка, тестирование / Eclipse 3.4.0 - время от времени неактивен пункт компиляции. И другие вопросы. : Сентябрь 15, 2008, 20:56
Здравствуйте!


Делаю разработку в среде Eclipse 3.4.0. Для работы с Qt установлен плагин Qt C++ Eclipse Integration 1.4.1, взят с офицального сайта Trolltech.

И есть три большие проблемы.

1. Иногда после изменения кода, неактивен пункт меню Project -> Build Project. Приходится тогда компилить через скрипт в консоли. Особой закономерности, в какие моменты пункт становится неактивен, не понял, хотя закономерность, очевидно, есть. В рунете это проблему не обсуждают, у буржуев - есть, но внятных ответов не нашел.

Иногда пункт становится снова активен после передергивания галки Project -> Build Automatically. Вообще, она у меня снята, т.к. мне сборка нужна только тогда, когда я сам ткну.

Ну в общем работать нормально невозможно. Излазил все настройки, ничего не нашел. Что делать?


2. Не понял, как настраивать автоматическое сохранение кода перед сборкой. Приходится вначале руками тыкать File -> Save All, а если забудешь - то изменения, которые вносил в код, естественно не будут скомпилированы, ибо файлы не сохранены.


3. Вопрос вытекает из второго вопроса. Если невозможно настроить автосохранение перед сборкой, то как хотябы вынести кнопку Save All на панель? В настройках панели именно этой кнопки почему-то нет для добавления.
695  Qt / Установка, сборка, отладка, тестирование / Re: Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0 : Сентябрь 12, 2008, 18:08
/usr/include/qt4 в /etc/ld.so.conf явно лишнее


Скорее всего. И всеже нигде найти не могу, обрабатываются ли рекурсивно директории, прописанные в /etc/ld.so.conf ? Как-то странно, механизм древний как пятый редхат, а подробности его работы не разглашаются.
696  Qt / Установка, сборка, отладка, тестирование / Re: Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0 : Сентябрь 12, 2008, 00:18
Фух, ну вроде установил, и даже работает.


Вначале собрал в файлик все названия файлов либ и бинарей, которые принадлежали установленным пакетам версии 4.3.0

Потом скриптик написал чтоб они в бекаповую директорию перенеслись на всякий случай.

Сделал линки /ust/lib/qt4 ->  /usr/local/Trolltech/Qt-4.4.1/ и
/usr/include/qt4 -> /usr/local/Trolltech/Qt-4.4.1/include

Потом написал скриптик, который создает линки в директории /usr/bin на все файлы директории /usr/local/Trolltech/Qt-4.4.1/bin

Потом в /etc/ld.so.conf прописал директории /usr/include/qt4 и /usr/include/qt4/lib (так как незнаю, обходятся ли директории рекурсивно).

Потом дал команду ldconfig.

Ну и после этого qt-бинари стали использовать новую библиотеку.


Конечно, такой метод установки библиотеки меня не радует, но в свете того, что удалилась бы половина системы пакетным менеджером... Даже была мысля удалить либу через пакетный менеджер, записав, какие проги были в зависимостях... Но они бы потом не устанавливались, пока я бы не поставил ненужную мне либу 4.3.0.. Прогресс идет явно не в том направлении!
697  Qt / Установка, сборка, отладка, тестирование / Re: Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0 : Сентябрь 10, 2008, 22:54
1) какой дистрибутив linux? /* почему все так попривыкали писать winxp sp2, но linux - просто linux. linux - это вообще ядро! */

А я привык скрывать какой дистриб линуха у меня потому, что все сразу начинают советовать обновляться. И мне приходится долго объяснять почему я это делать не могу (это связано с разработкой под конкретное железо). У меня Ubuntu 7.04.


2) стоят ли dev-пакеты?

Да, стоят. libqt4-dev 4.3.0-4ubuntu1~fiesty1


> Вопрос такой - что теперь нужно сделать, чтобы заработала либа 4.4.1?

делать ничего не надо - кутэ уже фунциклирует

в большинстве случаев все программы, собранные с более ранней версией Qt, будут работать с более новой версией (в большинстве, но не во всех - хоть тролли и сохраняют бинарную совместимость между минорками, при некорректной настройке/сборке всегда можно отправить совместимость под хвост коту)

если стоят все необходимые dev-пакеты, думаю, лучшим выбором будет полностью заменить 4.3.0 на 4.4.1 (если, конечно, 4.3.0 не нужна для разработки или ещё зачем) - можно просто заменить оригинальные файлы/папки от 4.3.0 симлинками на соответствующие файлы/папки от 4.4.1

Мда, попытался удалить пакет libqt4-core (4.3.0), вместе с пакетом будет удалено половина системы. Придется вручную заменять и распихивать.
698  Qt / Установка, сборка, отладка, тестирование / Установка QT 4.4.1 из исходников под Linux в системе, где уже есть QT 4.3.0 : Сентябрь 10, 2008, 20:45
Здравствуйте!


Имею Linux систему, в которой в данный момент установлена Qt 4.3.0. Решил установить Qt 4.4.1, но этого пакета нет в репозитарии.

Выкачал с официального сайта Qt 4.4.1 и решил его установить из исходников. Для configure никаких опций не задавал, компилировал как есть. Согласно Readme, после установки, Qt 4.4.1 должен был разместиться в /usr/local/Trolltech/Qt-4.4.1. Именно туда он и установился.

Код:
# ls -1 /usr/local/Trolltech/Qt-4.4.1
bin
demos
doc
examples
include
lib
mkspecs
phrasebooks
plugins
translations
q3porting.xml

Пакет Qt 4.3.0 из системы не удалял, основываясь на том, что Qt вроде как для каждой версии библиотеки держит отдельную папку с либами. Пакет Qt 4.3.0 у меня разложен так

/usr/share/qt4 - основная директория библиотеки, включает bin, doc, include...
/usr/lib - туда положены файлы вида libQtCore.so.4, libQtCore.so.4.3, libQtCore.so.4.3.0, libQtXml.so.4, libQtXml.so.4.3, libQtXml.so.4.3.0 ...
/usr/bin - туда помещен только файл qdbus


Вопрос такой - что теперь нужно сделать, чтобы заработала либа 4.4.1? Хочу обойтись только созданием симлинков.


Дополнительные вопросы

1. А надо ли удалять пакеты с qt 4.3.0 ?
2. А если удалить 4.3.0, будут ли работать программы, собранные под 4.3.0 с либой 4.4.1 (после того как размещу ее канадо)?
699  Qt / Пользовательский интерфейс (GUI) / Re: Не работает форматирование текста в QTextEdit при выделении задом-наперед. : Сентябрь 09, 2008, 11:16
Хм, к сожалению не могу посмотреть как ваш патч работает, ибо имею версию Qt 4.3.0, а примеры (demos) имею от 4.4.0. Бинарь, который лежал в /textedit, работает, но пересобрать его не могу. Не хватает библиотек и определений типа QPrintPreviewDialog, QT_FORWARD_DECLARE_CLASS, и т.д.
700  Qt / Пользовательский интерфейс (GUI) / Re: Не работает форматирование текста в QTextEdit при выделении задом-наперед. : Сентябрь 08, 2008, 21:48
Смотреть demos\textedit особенно на:
Код:
void QTextEdit::mergeCurrentCharFormat ( const QTextCharFormat & modifier )

Предложенное там решение половинчатое, и тоже не работает как положено. Откомпилируйте его и посмотрите.

Если сделать слово жирным шрифтом, а потом начать выделять это слово сзаду-наперед, то увидим, что кнопка "B" определяет наличие форматирования (становится утопленой). Но это продолжается ровно до того момента, пока не будет выделена самая первая жирная буква слова. Как только выделяется первая буква, кнопка "B" отжимается!

И при нажатии на кнопку "B" (напомню, кнопка "B" в этот момент оказывается отжатой), вместо того чтоб жирное форматирование было снято, оно просто повторно устанавливается для этого жирного слова. А уже если еще раз нажать - то тогда форматирование снимается. Получается "холостое" нажатие кнопки форматирования.

Хотелось бы понять, как сделать применение/отмену форматирования по уму, так, чтоб все работало чотко. Как, как это сделать?


PS: Искал в гугле и у троллей готовый компонент "текстовый редактор", так чтоб базовые функции форматирования были, и все работало.. Не нашел. Существует ли такая вещь в природе?
701  Qt / Model-View (MV) / Re: Как раскрасить ветки в QTreeView? : Сентябрь 07, 2008, 21:50
Если тебе просто раскрасить надо, есть еще роли в модели, такие как Qt::BackgroundRole и  Qt::ForegroundRole. При заполнении модели задаешь цвет итема с их помощью

Да, спасибо, я именно так и сделал.
Это гораздо прощще чем с делегатами работать. Улыбающийся
702  Qt / Пользовательский интерфейс (GUI) / Re: проблема с выделением элемента QListView : Сентябрь 07, 2008, 21:47
Так я тоже уже пробывал-при таком подходе выделение исчезает. ДА-элемент уже выбран,я его редактирую. Нужно чтобы когда я закончу редактирование и нажму <Enter> выделенным остался только что редактируемый элемент(чтобы пользователь не "терялся" и не искал "а какой элемент он сейчас редактировал"). Просто видимо из-за того что политику модели я установил в QSqlTableModel::OnFieldChange (чтобы сразу изменения занеслись в бд) происходит сбрасывание выделенного элемента. Что странно- тот код выделения элемента что я приводил раньше работает при добавлении(я сделал чтобы выделялась только что добавленная новая запись)

Какая-то мистика. Количество строк в QListView при редактировании текущей выделеной строки не меняется. Если запоминать QModelIndex текущей выделеной строки, и после редактирования выставлять выделение на этот QModelIndex, то выделение должно выставиться именно на данную строку.

В крайнем случае, можно даже запоминать вместо QModelIndex номер строки и потом выставлять выделение на строку с этим номером.

Может быть автор топика имеет в виду, что выделение устанавливется правильно, но в поле QLineEdit исчезает текущая, только что отредактированная строка?
703  Qt / Пользовательский интерфейс (GUI) / Не работает форматирование текста в QTextEdit при выделении задом-наперед. : Сентябрь 07, 2008, 21:33
Здравствуйте!


Долго долбался над проблемой форматирования текста, а оказалось что проблема не в моем UI-коде, а в том, что я привык выделять текст задом-наперед (ну то есть двигать мышь при выделении справа-налево). В результате обнаружил следующую особенность QTextEdit в Qt 4.2.3.

Имеем поле QTextEdit, создаем кнопочки для форматирования текста в этом поле, при клике на которые выполняется такой код

Код:
void editor::on_bold_clicked(void)
{
 if(!(textarea->fontWeight()==75))
  textarea->setFontWeight(75); // Bold
 else
  textarea->setFontWeight(0); // Remove Bold
}

void editor::on_italic_clicked(void)
{
 if(!textarea->fontItalic())
  textarea->setFontItalic(true);
 else
  textarea->setFontItalic(false);
}

И если выделять текст мышкой или клавиатурой слева-направо, то кнопки работают как нужно (устанавливается и снимается форматирование). А если выделить текст справа-налево, то кнопки работают только "наполовину". То есть форматирование устанавливается, но не отменяется.

То есть проблема в том, что при выделении задом-наперед, если в выделенном тексте есть форматирование B или I, то методы fontWeight() и fontItalic() (и другие) не видят наличия форматирования.


Вопрос - как бороться с этой особенностью, желательно не меняя версии Qt либы?
704  Qt / Model-View (MV) / Как раскрасить ветки в QTreeView? : Август 30, 2008, 23:40
Возник вопрос - как раскрасить ветки в QTreeView? Нужен хоть какой механизм - от возможности вывода текста ветки в гипертекстовой разметке (сейчас - разметка лезет в текст ветки) до установки какого-то свойства конкретному item-у.

Куды копать надо? Поискал, внятного ответа не нашел. Вроде как народ пользуется paintCell(), но этот механизм работает в Qt3 а не в Qt4, и к тому же для объекта TreeView такой метод вообще не определен, только для ListView.

Кто что может посоветовать?
705  Qt / Пользовательский интерфейс (GUI) / Re: QAction и вызов слота с параметром. Как сделать? : Август 25, 2008, 15:43
читай документацию по QAction и QMenu

Спасибо за ответ! Он мне очень помог, теперь я точнее знаю, какие вещи в QT выше моего понимания!

Сделал по-простому, "один пункт меню"->"один слот".
Страниц: 1 ... 45 46 [47] 48 49 50

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