Как стать автором
Обновить

Комментарии 25

Спасибо)
О. Пока спец по сей среде тут, спрошу. Есть ли способ эту боковую панель перенести куда-нибудь вниз? А то на вертикально повёрнутом мониторе получается весьма вырвиглазно и ни разу не удобно.
Внизу как бы находится другой элемент интерфейса, а именно Output Pane.
Вот здесь пример: habrahabr.ru/post/101311/
Перенести же саму навигационную панель (как я понял перетаскиванием или чем-то подобным) к сожалению нельзя.
Ну, при работе в той же студии или даже monodevelop, места хватает внизу на всё. Пока что для меня сей печальный факт является фатальным недостатком QtCreator, ибо в целом сия IDE весьма хороша.
Честно говоря, впервые слышу о том, что мешает именно боковая панель навигации. Как правило на современных мониторах больше проблем создают именно панели располагаемые горизонтально…

Максимум что можно сделать, это использовать Alt+0 или переназначить эту горячую клавишу — она прячет/показывает панель.
У меня нормальный монитор с нормальной подставкой, которая позволяет повернуть его на 90 градусов и получить 1200х1920 (10:16) что очень, очень удобно для кодирования, ибо строчек видно в разы больше. Все нормальные IDE позволяют раскидывать окошки как мне удобно и только QtCreator с упорством маньяка съедает треть экрана (там ещё слева панелька Unity висит, но она совершенно не мешает в остальных IDE) своей боковой панелью. Жутко бесит, хочется взять и удалить.
Можно написать feature-request в их трекер. И собрать достаточное количество голосов. Не думаю, что с реализацией будут проблемы, было бы желание =).
Можно даже самому написать патч, а потом им послать.
Это самый офигезный туториал по расширениям в Qt Creator. Вот где вы были год назад, когда я баловался с ними?)) Однозначно огромное спасибо!
Благодарю! Год назад я с этим и разбирался… Но тогда так и не дописал.
Осилил всё-таки. Спасибо за ваш труд, достаточно полезный для некоторых.
Спасибо, старался. Планирую дописать если получится.
Пост огромный, но все же считаю правильным, что такого типа посты-туториалы не разбиты на части. Еще бы пункты меню, приведенные в начале, ссылались на соответствующие разделы в статье, было бы вообще замечательно.

А за статью огромное спасибо, очень пригодится, ведь я как раз один из тех, у кого Creator является основной средой разработки )
Буду рад, если информация окажется полезной. правда я не уверен насчёт её актуальности на данный момент.

Прошло 4 года… а заобновить не хотите? ;-)

Картинки на серверах VK — это, конечно, не очень хорошо. Поменяйте хотя бы *.vkontakte.ru на *.userapi.com, если не затруднит.
Попробую чуть позже. А в чём конкретно проблема, скажите пожалуйста?
В том, что доступ к VK на работе заблокирован :/
Присоединяюсь ко мнению, что это самый крутой пост про расширения QtCreator, который можно найти. Огромное спасибо за труд, очень ждем продолжения. Маленькое замечание только по реализации — удаляя приватный объект, в частности HtmlEditorWidgetData, вы забываете, что он содержит указатели на объекты в куче. Вроде бы, такие объекты у вас вообще нигде не удаляются (и parent у них нулевой)
Большое спасибо за похвалу, я старался =)

Продолжение вряд ли появится, так как свободного времени у меня с каждым днём всё меньше и меньше.

А по поводу удаления этого объекта, там ведь описан деструктор с таким кодом:
HtmlEditorWidget::~HtmlEditorWidget()
{
    delete d;
}
Верно, но d — указатель на структуру, часть полей которой — указатели, инициализируемые, например, так:

    d->webView = new QWebView;
    d->textEdit = new QPlainTextEdit;

Я не увидел, где удаляются webView и textEdit. Автоматически они также не уничтожаться, так как свойство parent у обоих нулевое.
Может быть вам будет не сложно пояснить, зачем вы вообще выносите данные класса в отдельную структуру? Я вижу, да, что так смотрится аккуратнее, проявляются некоторые преимущества pimpl. Но ведь во-первых это не совсем pimpl, так как по указателю доступна не реализация класса, а только его данные; во-вторых, почти все достоинства уйдут, как только мы решим проблемы, которые нужно решить: 1) опишем полноценный деструктор такой структуры с данными 2) так как деструктор, скорее всего, будет просто удалять объекты, доступные из структуры по указателю, то нам придется обеспечить инвариант: каждый такой указатель либо указывает на реально выделенную память, либо нулевой. То есть, мы как минимум опишем конструктор этой структуры 3) структуру лучше спрятать nested-классом в класс, её использующий, ведь нечего ей делать в глобальном пространстве имен — мы так и поступим; в-третьих, мы автоматически получаем и недостатки pimpl — вы лишаете себя возможности контролировать константность методов — они не смогут менять указатель на структуру, но смогут делать что угодно с ее содержимым. А там всё.
Пожалуйста, посмотрите в начало поста, всё что я сделал это наполовину перевёл/перепроверил работоспособность кода из большущего документа, описывающего систему расширений Qt Creator. Я не ставил своей целью оптимизацию кода или ещё что-то подобное, главное — это разъяснение именно работы с плагинами креатора. Поэтому многое не учёл, согласен.
Хотя в данном конкретном случае, если я правильно понимаю, проблему можно решить так:

    d->webView = new QWebView(this);
    d->textEdit = new QPlainTextEdit(this);
Может, кому-то поможет диаграммка, кратко излагающая, кто кого создает, и кто кого (по parent-ссылкам) удаляет:



(исходный VisualParadigm-файл)

На диаграмме можно увидеть IDocument, который пришел на смену IFile в QtCreator 2.5

Вероятно, стоит пояснить, что QWidget *, которого ожидает в качестве аргумента EditorFactory::createEditor, это как раз указатель на нечто, обозначенное как MainWidget
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории