• Какое хранилище данных выбрать?

    Zifix
    @Zifix Куратор тега Qt
    Barbatum
    SQLite
    Ответ написан
    Комментировать
  • Как быть с отладкой внутренностей Qt?

    PavelK
    @PavelK Автор вопроса
    В общем всё оказалось проще - достаточно добавить исходники Qt в настройки дебагера, почему изначально так не сделано -хз. Поправка - их надо было скачать.
    Ответ написан
    Комментировать
  • Как подключить файл стилей qss?

    kulinich
    @kulinich
    С++ программист
    Я делал так (это правда давно было, может в текущей версии Qt надо подправить):
    int main(int argc, char** argv)
    {	
      QApplication app(argc, argv);
      QFile file(":/qss/stylesheet.qss");
      file.open(QFile::ReadOnly);
      app.setStyleSheet(file.readAll());
      bool ok = app.exec(); 
      return ok;
    }


    в файле stylesheet.qss:
    QTabWidget {
    	background-color: #999999;
    }
    Ответ написан
  • Что делает "Q_DECL_OVERRIDE" в Qt?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Этот макрос раскрывается как override, если есть поддержка C++11 и как пустое место в противном случае. Что собственно и написано на сайте: "It expands to "override" if your compiler supports that C++11 contextual keyword, or to nothing otherwise".
    Что означает ключевое слово override можно легко нагуглить: en.cppreference.com/w/cpp/language/override.
    Для виртуальных функций отличная практика писать слово virtual только один раз -- в интерфейсе обычно, от этого они виртуальными быть не перестанут. В остальных случаях override.
    Ответ написан
    Комментировать
  • Как получить размер QTabBar'a (Qt, c++)?

    AtomKrieg
    @AtomKrieg
    Давай я поищу в Google за тебя
    tb->parent()->size()->width();
    Ответ написан
    6 комментариев
  • Почему не меняется заголовок окна Qt?

    Zifix
    @Zifix Куратор тега Qt
    Barbatum
    Нельзя передавать параметры в connect. Попробуйте новый синтаксис сигналов и слотов + замыкание:
    connect(act, &QAction::triggered, [=]() { 
        wgt.setWindowTitle("sasdfasdf"); 
    });
    Ответ написан
    7 комментариев
  • Какие есть варианты заданий для начинающего программиста на Qt?

    @neosapient
    VC9, VC11, QT4, QT5, MySQL
    >> нужна практика по решению каких либо тривиальных заданий

    Вам для чего Qt? Для быстрого прототипирования офисных программок?

    Тогда ставлю следующие задачи:
    В данной библиотеке неплохо реализован паттерн Model-View-Controller.
    Сделайте модель таблицы с полями <ФИО, дата рождения>. (смотри QAbstractItemModel и наследники; для простоты возьмите QStandardItemModel)
    Далее, сделайте представление, которое отображает таблицу <ФИО, дата рождения>. (смотри QTableView)
    И сделайте второе представление, которое отображает таблицу <ФИО, возраст> (смотри работу с делегатами)
    Ну и наконец, добавьте редактирование полей таблицы через первое представление. Т.е. чтобы в первой вьюхе можно было поменять дату, и тогда автоматически обновлялся возраст во второй вьюхе.

    Для мотивировки, сроки и условия будут как на обычной работе в офисе, т.е.: "Сдать надо было ещё вчера. Выполнять!"
    Ответ написан
    Комментировать
  • Можно ли писать на чистом Си под Qt? Или для этого нужно именно Си++?

    Zifix
    @Zifix Куратор тега Qt
    Barbatum
    Для вас давным-давно придумали Gtk, но писать интерфейсы без ООП идея плохая, уж поверьте)
    Ответ написан
    Комментировать
  • Можно ли писать на чистом Си под Qt? Или для этого нужно именно Си++?

    @Beltoev
    Живу в своё удовольствие
    Учитывая, что там всё построено на ООП, а не на процедурном подходе, то ответ очевиден - нет.
    Ответ написан
    Комментировать
  • Как сделать Qt static?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Платиновый вопрос.

    1. Как это сделать?

    Сделать это можно собрав Qt из исходников с необходимыми ключами конфигурации. Руководств в сети много.

    2. Почему вообще это требуется делать?

    Делать этого не требуется в общем случае. Вам необходимо просто собрать бинарные версии библиотек (dll) в папке рядом с вашим исполняемым файлом (одна из них - модуль Qt5Widgets.dll, о которой вам говорит ошибка). Это динамическая линковка библиотек.

    Для удобства вы всегда можете воспользоваться windeployqt (для Windows), который соберет все необходимые файлы в одно место или просто отыскав и сложив их вручную (проанализировав зависимости процесса под отладкой в IDE с помощью Process Explorer или специальной утилитой - DependencyWalker)

    Чтобы все необходимые модули Qt "вкомпилировались" в ваш исполняемый файл (статическая линковка), вам нужно собрать версию Qt, которая это поддерживает (но она не распространяется в виде готового бинарного пакета, потому из исходников).

    Ну и статическая линковка при прочих равных нарушает community-лицензию Qt, если с программой не распространять открытый исходный код (нужно дать возможность пользователю заменить версию Qt динамически, либо собрать программу с ним заново).
    Ответ написан
    Комментировать
  • Как сделать Qt static?

    Zifix
    @Zifix Куратор тега Qt
    Barbatum
    Вы чего-то не понимаете. Не понимаете, что такое библиотека, как работает линкер. Учите матчасть.

    Hint: windeployqt
    Ответ написан
    Комментировать
  • Как хранить настройки приложения разработанного для Android (в Qt)?

    Zifix
    @Zifix Куратор тега Qt
    Barbatum
    Используйте QSettings и не думайте о том, как оно будет хранить и на какой платформе.
    Ответ написан
    Комментировать
  • Как взять отдельный символ по индексу в QString?

    @vilgeforce
    Раздолбай и программист
    А str[0] чем вас не устраивает? Вроде ровно то что нужно...
    Если же вам нужно проверить наличие хотя бы одного искомого символа в строке - метод indexOf уже реализует то что вы хотите сделать сами.

    PS. Поиск по документации быстрее регистрации на сайте, кстати.
    Ответ написан
    4 комментария
  • QT. Как унаследовать класс?

    Zifix
    @Zifix Куратор тега Qt
    Barbatum
    Вы совершенно неправильно работаете с UI в Qt. EpuckInterface выглядит как класс логики, а вы зачем-то пытаетесь сделать его предком UI класса. Просто создайте экземпляр EpuckInterface как поле MyWindow.
    Ответ написан
    7 комментариев
  • Возможно ли как-то БД 1С интегрировать в Qt?

    Nipheris
    @Nipheris Куратор тега C++
    Если 1C хранит данные в SQL, то в общем-то проблем нет, надо только выяснить какая СУБД используется.
    Если 1C хранит данные в sdf-ках, то в принципе тоже можно, но я бы не стал открыть этот ящик Пандоры.
    Ответ написан
    2 комментария
  • Почему PyQt5 не считает класс виджета QObject?

    Avernial
    @Avernial
    Разрабатываю научное ПО на языке Python.
    У вас в целом очень странная организация классов, отсюда и ошибки. Также у вас ошибки в исходных текстах, например lineedit и lineEdit, откуда то QTableViewItem взялся, его в библиотеке даже нет, откуда то взялся метод exec_loop.
    Когда приводите пример, будьте внимательны.
    А проблему вашу, решить проще так:

    class ORGH_widget(Qt.QWidget):
    
        def __init__(self, parent=None):
            super(ORGH_widget, self).__init__(parent)
            self.maindialog = ORGH_app(None)
            self.layout = Qt.QVBoxLayout(self)
            self.layout.addWidget(self.maindialog)
            self.maindialog.show()
    #        self.exec_loop()
    
        def keyPressEvent(self, e):
            if e.key() == Qt.Qt.Key_Escape:
                self.close()
    
    
    class ORGH_app(Qt.QMainWindow):
    
        def __init__(self, parent):
            super(ORGH_app, self).__init__()
            self.form = Ui_Form()
            self.form.setupUi(self)
    
            self._connectSlots()
    
        def _connectSlots(self):
            self.form.pushButton.clicked.connect(self._slotAddClicked)
    
        def _slotAddClicked(self):
            text = self.form.lineEdit.text()
            if len(text):
    #             tvi = Qt.QTableViewItem(self.form.tableView)
    #             tvi.setText(0, text)
                self.form.lineEdit.clear()
    
    if __name__ == "__main__":
        app = Qt.QApplication(sys.argv)
        main = ORGH_app(None)
        main.show()
        sys.exit(app.exec())
    Ответ написан
    1 комментарий
  • Есть ли уже литература по C++ вместе с Qt5, QtQuick, qml всреде QtCreator?

    Zifix
    @Zifix Куратор тега Qt
    Barbatum
    Кончено, можно учить сначала C++, потом Qt5 потом qml, но мне кажется что в одной книге это было бы удобнее.
    Размером такая книга будет с войну и мир, так что не думаю, что она когда-нибудь появится.

    Потому план такой:
    • Берем любую книгу по С++, того же Шилдта например
    • Берем любую книгу по Qt не ниже 4, того же Шлее например
    • Берем примеры программ из стандартной поставки и смотрим их

    Получится правильная общая картина, которая легко дополняется документацией и статьями. Вот еще хороший обзорный мануал: qmlbook.github.io
    Ответ написан
    Комментировать
  • Почему перестал работать код для получения котировок валют от цб рф, ссылаясь на "failed to open stream: Redirection limit reached, aborting"?

    alexkbs
    @alexkbs
    Не ЦБ единым... Есть прокси для получения курсов ЦБ РФ без лишних заморочек, во всевозможных форматах.
    https://www.cbr-xml-daily.ru/
    https://www.cbr-xml-daily.ru/daily.xml
    https://www.cbr-xml-daily.ru/daily_utf8.xml
    https://www.cbr-xml-daily.ru/daily_eng.xml
    https://www.cbr-xml-daily.ru/daily_eng_utf8.xml
    https://www.cbr-xml-daily.ru/daily_json.js
    https://www.cbr-xml-daily.ru/daily_jsonp.js

    Работает так: (пример с сайта)
    <div id="USD">Доллар США $ — 00,0000 руб.</div>
    <div id="EUR">Евро € — 00,0000 руб.</div>
    
    <script>
    function CBR_XML_Daily_Ru(rates) {
    	var USDrate = rates.Valute.USD.Value.toFixed(4).replace('.', ',');
    	var USD = document.getElementById('USD');
    	USD.innerHTML = USD.innerHTML.replace('00,0000', USDrate);
    
    	var EURrate = rates.Valute.EUR.Value.toFixed(4).replace('.', ',');
    	var EUR = document.getElementById('EUR');
    	EUR.innerHTML = EUR.innerHTML.replace('00,0000', EURrate);
    }
    </script>
    <script src="https://www.cbr-xml-daily.ru/daily_jsonp.js"></script>

    Огромное преимущество перед выкачкой курсов в XML в том что ничего не нужно качать и парсить на стороне сервера. Ничего такого, что в другом ответе, делать не нужно. Страницы открываются много шустрее.
    Ответ написан
    1 комментарий
  • Как подружить Qt с Visual Studio Community 2015?

    @Neonoviiwolf
    Flutter developer
    в гугле забанили? полно инфы же
    Ответ написан
    4 комментария
  • Как разместить компоненты на одной форме?

    Zifix
    @Zifix Куратор тега Qt
    Barbatum
    Где вы работаете с GroupBox'ами? Вы ведь их даже задействовали нигде.

    При размещении на Layout все кнопки открываются в отдельных окнах.
    Вы пробовали действовать не только методом тыка, а еще и книжку по Qt почитать?
    Ответ написан
    Комментировать