Вопросы с тегами [qt]

1

голосов
1

ответ
12

Просмотры

редактирование QAbstractTableModel без очистки предыдущих данных в ячейке

Я создал модель, основанную офф QAbstractTableModel, что позволяет пользователю редактировать данные в этой модели. Модель отображается в QTableView в QMainWindow. До сих пор в моей модели я могу сделать клетки для редактирования, и сохранить те типы пользователей после редактирования закончено. Проблема в том, что, когда пользователь начинает редактирование, это очищает 'предыдущего содержимого этой ячейки. Так что, если, например, я только хотел, чтобы изменить написание строки в ячейке, я должен заново ввести все значения. Я хотел бы при редактировании, что редактор будет начинаться с данными, уже в модели, а не пустой. Как я могу это сделать? Пример вопроса: Перед тем, как начать редактирование ячейки: Как только я начала редактирования, ячейка пуста. Я хотел бы, чтобы это звезда с предыдущим значением уже в модели: Вот минимальный пример моей модели. Моя текущая модель намного больше и использует-структуру, а не просто 2D массива QVariants для хранения данных. Заголовок: Const INT COLS = 2; константные INT ЧСТРОК = 6; Класс EditableTableModel: общественный QAbstractTableModel {Q_OBJECT частное: QVariant tableData [РЯДЫ] [COLS]; общественности: EditableTableModel (QObject * родитель = nullptr); INT ROWCOUNT (Const QModelIndex & родитель = QModelIndex ()) Const переопределение; INT ColumnCount (Const QModelIndex & родитель = QModelIndex ()) Const переопределение; QVariant данные (Const QModelIndex & индекс, Int Роль = Qt :: DisplayRole) Const переопределение; BOOL SetData (Const QModelIndex & индекс, Const QVariant & значение, Int Роль = Qt :: EditRole) переопределение; QVariant headerData (интермедиат раздел, Qt :: ориентации Ориентация, Int роль) Const переопределение; Qt :: ItemFlags флаги (Const QModelIndex и индекс) Const переопределение; сигналы: editCompleted недействительными (QString); }; Реализация: EditableTableModel :: EditableTableModel (QObject * родитель): QAbstractTableModel (родитель) {} INT EditableTableModel :: ROWCOUNT (Const QModelIndex & / * родитель * /) сопзЬ {вернуть дах; } INT EditableTableModel :: ColumnCount (Const QModelIndex & / * родитель * /) сопзЬ {вернуть COLS; } QVariant EditableTableModel :: данные (Const QModelIndex & индекса, Int роль) сопзЬ {INT = строка index.row (); INT Col = index.column (); переключатель (роль) {случай Qt :: DisplayRole: вернуть tableData [строки] [Col]; } Вернуть QVariant (); } BOOL EditableTableModel :: УстановитьДанные (Const QModelIndex и индекс, Const QVariant & значение, внутр роль) {если (роль == Qt :: EditRole) {если вернуться ложным (checkIndex (индекс)!); tableData [index.row ()] [индекс. колонка ()] = значение; возвращает истину; } Вернуться ложным; } QVariant EditableTableModel :: headerData (интермедиат раздел, Qt :: ориентация ориентирование, внутр роль) сопзЬ {если (роль == Qt :: DisplayRole && ориентация == Qt :: Horizontal) {переключатель (раздел) {случай 0: возвращение QString ("Имя"); Случай 1: возвращение QString ( "Last Name"); }} Вернуть QVariant (); } Qt :: ItemFlags EditableTableModel :: Флаги (Const QModelIndex и индекс) сопзЬ {вернуть Qt :: ItemIsEditable | QAbstractTableModel :: флаги (индекс); } Горизонтальный) {переключатель (раздел) {случай 0: возвращение QString ( "Имя"); Случай 1: возвращение QString ( "Last Name"); }} Вернуть QVariant (); } Qt :: ItemFlags EditableTableModel :: Флаги (Const QModelIndex и индекс) сопзЬ {вернуть Qt :: ItemIsEditable | QAbstractTableModel :: флаги (индекс); } Горизонтальный) {переключатель (раздел) {случай 0: возвращение QString ( "Имя"); Случай 1: возвращение QString ( "Last Name"); }} Вернуть QVariant (); } Qt :: ItemFlags EditableTableModel :: Флаги (Const QModelIndex и индекс) сопзЬ {вернуть Qt :: ItemIsEditable | QAbstractTableModel :: флаги (индекс); }
DaveK
1

голосов
1

ответ
35

Просмотры

Как изменить свойства QML элемента из C ++

Я пишу небольшой интервал QT (5,12) приложений в C ++, который будет двигаться центром QMap каждой секунды. Я пытаюсь обновить координаты, так что центр будет обновляться, но после отладки, он всегда оставаться таким же (исходное значение). Это моя первая попытка с QML, поэтому я помогаю себе с сильфоном связи, но, видимо, я не делаю что-то правильно. https://doc.qt.io/qt-5/qtqml-cppintegration-interactqmlfromcpp.html функция называется Обновление каждую секунду с помощью таймера #include #include недействительными MainWindow :: UpdateCoordinates () {плавать LATDEGM = (60 * 1853,181); плавать DEG2RAD = (ПИ / 180,0); QString speedData = ui-> sboxSpeed-> текст (); BOOL нормально; AirSPEED = speedData.toInt (& нормально); AirCourse = (AirCourse + 360) 360%; Dx = AirSpeed ​​* sin ((поплавок) AirCourse * DEG2RAD); Dy = AirSPEED * сов ((поплавок) AirCourse * DEG2RAD); QString Дат текст = ui-> txtLatitude-> (); Шир = dat.toDouble (); QString dat2 = ui-> txtLongtitude-> текст (); Lon = dat2.toDouble (); Dx / = 3,6; Dy / = 3,6; Шир + = Dy / LATDEGM; Lon + = Dx / (LATDEGM * соз (Lat * DEG2RAD)); ui-> txtLatitude-> SetText (QString :: номер (Lat)); ui-> txtLongtitude-> SetText (QString :: номер (Lon)); // Использование QQmlComponent QQmlEngine двигателя; Компонент QQmlComponent (& двигатель, QUrl (QStringLiteral ( "QRC: /Map.qml"))); QObject * объект = component.create (); QObject * Карта = object-> дети () в (1). если (карта) {Map-> SetProperty ( "newLatitude", лат); Map-> SetProperty ( "newLongitude", Lon); станд :: соиЬ txtLatitude-> текст (); Шир = dat.toDouble (); QString dat2 = ui-> txtLongtitude-> текст (); Lon = dat2.toDouble (); Dx / = 3,6; Dy / = 3,6; Шир + = Dy / LATDEGM; Lon + = Dx / (LATDEGM * соз (Lat * DEG2RAD)); ui-> txtLatitude-> SetText (QString :: номер (Lat)); ui-> txtLongtitude-> SetText (QString :: номер (Lon)); // Использование QQmlComponent QQmlEngine двигателя; Компонент QQmlComponent (& двигатель, QUrl (QStringLiteral ( "QRC: /Map.qml"))); QObject * объект = component.create (); QObject * Карта = object-> дети () в (1). если (карта) {Map-> SetProperty ( "newLatitude", лат); Map-> SetProperty ( "newLongitude", Lon); станд :: соиЬ txtLatitude-> текст (); Шир = dat.toDouble (); QString dat2 = ui-> txtLongtitude-> текст (); Lon = dat2.toDouble (); Dx / = 3,6; Dy / = 3,6; Шир + = Dy / LATDEGM; Lon + = Dx / (LATDEGM * соз (Lat * DEG2RAD)); ui-> txtLatitude-> SetText (QString :: номер (Lat)); ui-> txtLongtitude-> SetText (QString :: номер (Lon)); // Использование QQmlComponent QQmlEngine двигателя; Компонент QQmlComponent (& двигатель, QUrl (QStringLiteral ( "QRC: /Map.qml"))); QObject * объект = component.create (); QObject * Карта = object-> дети () в (1). если (карта) {Map-> SetProperty ( "newLatitude", лат); Map-> SetProperty ( "newLongitude", Lon); станд :: соиЬ удвоить(); Dx / = 3,6; Dy / = 3,6; Шир + = Dy / LATDEGM; Lon + = Dx / (LATDEGM * соз (Lat * DEG2RAD)); ui-> txtLatitude-> SetText (QString :: номер (Lat)); ui-> txtLongtitude-> SetText (QString :: номер (Lon)); // Использование QQmlComponent QQmlEngine двигателя; Компонент QQmlComponent (& двигатель, QUrl (QStringLiteral ( "QRC: /Map.qml"))); QObject * объект = component.create (); QObject * Карта = object-> дети () в (1). если (карта) {Map-> SetProperty ( "newLatitude", лат); Map-> SetProperty ( "newLongitude", Lon); станд :: соиЬ удвоить(); Dx / = 3,6; Dy / = 3,6; Шир + = Dy / LATDEGM; Lon + = Dx / (LATDEGM * соз (Lat * DEG2RAD)); ui-> txtLatitude-> SetText (QString :: номер (Lat)); ui-> txtLongtitude-> SetText (QString :: номер (Lon)); // Использование QQmlComponent QQmlEngine двигателя; Компонент QQmlComponent (& двигатель, QUrl (QStringLiteral ( "QRC: /Map.qml"))); QObject * объект = component.create (); QObject * Карта = object-> дети () в (1). если (карта) {Map-> SetProperty ( "newLatitude", лат); Map-> SetProperty ( "newLongitude", Lon); станд :: соиЬ // Использование QQmlComponent QQmlEngine двигателя; Компонент QQmlComponent (& двигатель, QUrl (QStringLiteral ( "QRC: /Map.qml"))); QObject * объект = component.create (); QObject * Карта = object-> дети () в (1). если (карта) {Map-> SetProperty ( "newLatitude", лат); Map-> SetProperty ( "newLongitude", Lon); станд :: соиЬ // Использование QQmlComponent QQmlEngine двигателя; Компонент QQmlComponent (& двигатель, QUrl (QStringLiteral ( "QRC: /Map.qml"))); QObject * объект = component.create (); QObject * Карта = object-> дети () в (1). если (карта) {Map-> SetProperty ( "newLatitude", лат); Map-> SetProperty ( "newLongitude", Lon); станд :: соиЬ
tomazj
1

голосов
2

ответ
11.2k

Просмотры

Установить дату на QDateEdit с C ++

У меня есть этот QDateEdit виджет, но он показывает всегда стандартное время, как 01-01-2014 (в ДД-ММ-ГГГГ, но я могу изменить это в UI). Но я хочу, чтобы отобразить текущее время, если диалоговое окно (где это QDateEdit виджет) открыто. Я проверил это только на этикетке (см порового form_dialog). Но его printss из «са 23 ноября 2013». Но я хочу, это как 23-11-2013. Кроме того, он дает мне ошибку: QDateTimeEdit :: SETDATE»: не удается преобразовать параметр 1 из„QString“до„сопзЬ QDate &“Причина: не удается преобразовать из„QString“до„сопзЬ QDate“Нет оператора определенного пользователя преобразования доступен, которые могут выполнить это преобразование, или оператор не может быть назван Так недействительный form_dialog :: setCurrentDate () {дата QDate = QDate :: CurrentDate (); QString DateString = Date.toString (); ui-> DateEdit-> SETDATE (DateString); } Спасибо! Может быть, его полезно иметь что-то визуальное, виджет, который отображается ниже должен отображать текущую дату:
SjonTeflon
1

голосов
1

ответ
669

Просмотры

QPainter композиция не работает, как ожидалось с фоном

Я пытаюсь нарисовать два прямоугольника с тем же цветом и прозрачностью на QFrame с белым фоном. Эти прямоугольники должны перекрываться и их прозрачность не должна меняться (в том числе в области перекрытия). Так как это: Вот код, который я до сих пор: класс Canvas: общественный QFrame {общественность: недействительный paintEvent (QPaintEvent * событие) переопределение; }; пустота Canvas :: paintEvent (QPaintEvent * событие) {QPainter художник (это); painter.setPen (QPen (Qt :: NoPen)); painter.setBrush (QBrush (QColor (0,0,255,125))); painter.drawRect (QRect (10,10,100,100)); painter.setCompositionMode (QPainter :: CompositionMode_Source); painter.setBrush (QBrush (QColor (0, 0, 255, 125))); painter.drawRect (QRect (80, 80, 100, 100)); } INT основных (INT ARGC, символ ** ARGV) {QApplication а (ARGC, ARGV); Холст холст; холст. setAutoFillBackground (истина); QPalette дружок; pal.setColor (QPalette :: Window, QColor (Qt :: красный)); canvas.setBackgroundRole (QPalette :: Window); canvas.setPalette (PAL); canvas.show (); вернуть a.exec (); } Однако это приводит следующее изображение: Я перепробовал все возможные режим композиции для художника, но никто, кажется, не дает мне желаемого эффекта. Я предполагаю, что CompositionMode_Source является правильным, так как если я использую следующий код: QPixmap пиксельного (200, 200); pixmap.fill (Qt :: прозрачный); QPainter художник (& пиксельный); painter.setPen (QPen (Qt :: NoPen)); painter.setBrush (QBrush (QColor (0, 0, 255, 125))); painter.drawRect (QRect (10, 10, 100, 100)); painter.setCompositionMode (QPainter :: CompositionMode_Source); painter.setBrush (QBrush (QColor (0, 0, 255, 125))); painter.drawRect (QRect (80, 80, 100, 100)); QLabel этикетки; этикетка. setPixmap (пиксельная); label.show (); Я получаю желаемый эффект (но без красного фона): Тем не менее, если я изменить заливку Qt :: красный я снова: Что я здесь отсутствую? Как я могу получить желаемый эффект? Фактическое применение этого заключается в том, что я хочу рисовать прямоугольники на QFrame производного классе, который реализуется в Lib третьей стороны, по которой у меня есть ограниченный контроль.
Frank
1

голосов
2

ответ
450

Просмотры

QTableView не обновляется должным образом

Я создаю небольшую программу, которая принимает пользовательский ввод в модель, а затем показывает, что ввод в нескольких видах, которые принимают его через фильтры. Когда пользователь нажимает на кнопку, которая принимает на вход, программа обновляет количество клеток в мнениях, а затем изменяет эти клетки по мере необходимости так, что они вписываются в их районе. Моя проблема заключается в том, что клетка изменение размер не похоже на работу для одного из представлений по какой-то причине (я пытался искал различие, но не мог найти причину для того, что я испытываю). Я вызываю функцию клеток изменения размера в двух местах: dataChanged слот. resizeEvent слот. Если функция клеток изменение размера вызывается дважды в dataChanged, то вид делает обновление, однако это предполагает некоторые расчеты и доступ через пользовательский интерфейс и, очевидно, не должно произойти. Если изменить размер моего окна, то клетка изменяется должным образом. Я подозреваю, что я всегда за одно обновление - что вид не окрашивает, пока новое обновление не начнет получать рассчитать и затем, что новое обновление не будет отложена до следующего вычисления (так как изменение размера происходит много раз подряд он может просто действовать так же, как кнопка, но тверже / невозможно заметить). У меня есть некоторые грязные обходные пути: Как я уже говорил, если я снова называю свою функцию клеток изменения размера, обновление просматривать правильно. Если я удалить второй «если» в следующем фрагменте кода, то все работает. Я думал, что спасти мой компьютер какую-то работу только в обработке, когда весь вход был получен. Мое мышление было то, что, хотя dataChanged испускается для каждого отдельного элемента я вставляя, я только действительно нужно обновлять один раз все это в: ничтожной MainWindow :: on_dataChanged () {статические INT left_to_insert = -1; если (0> left_to_insert) {left_to_insert = m_model.rowCount () - 1; } Если (0 == left_to_insert) {... m_matrix_proxy.resize_to_fit (); adjust_matrix_cells_sizes (); }} --Left_to_insert ли это плохо обрабатывать только последний сигнал? Зачем? Я попытался назвать обновление () и / или перекрасить () как на матрице и в главном окне. Я попытался назвать оба этих на видовом экране в QTableView и попытался назвать их последовательно от самой матрицы до самого высокого родителя, который не делал мой сбой программы. (Ui-> матрица-> parentWidget () -> parentWidget () ...) Я попытался qApp-> processEvents (). Я даже прибегал к испуская resizeEvent, но это излишество ИМО, как это делает некоторые расчеты будут выполнены снова. Только в случае, если это как-то отношение: Данные отображаются правильно. Единственное, что не так в том, что клетки не изменить.
user2962533
1

голосов
1

ответ
1.7k

Просмотры

Как рисовать с QPainter конкретного виджета из группы виджетов QMainWindow?

Это мой код: #include "mainwindow.h" #include #include #include #include #include MainWindow :: MainWindow (QWidget * Родитель): QMainWindow (родитель) {m_QPushButton_calibration = новый QPushButton ( "Калибровка", это); подключения (m_QPushButton_calibration, SIGNAL (выпущен ()), это, SLOT (handleButton ())); QList l_QListQCameraInfo_available_cameras = QCameraInfo :: availableCameras (); m_QWidget_viewfinder_holder = новый QWidget; m_QWidget_viewfinder_holder-> setStyleSheet ( "цвет фона: черный"); m_QCameraViewfinder_viewfinder = новый QCameraViewfinder (m_QWidget_viewfinder_holder); если (l_QListQCameraInfo_available_cameras.length ()> = 2) {m_QCamera_required_camera = новый QCamera (l_QListQCameraInfo_available_cameras [1]); m_QCamera_required_camera-> setViewfinder (m_QCameraViewfinder_viewfinder); m_QCamera_required_camera-> начать (); } M_QWidget_central = новый QWidget; m_QGridLayout_central = новый QGridLayout; m_QWidget_central-> setLayout (m_QGridLayout_central); m_QGridLayout_central-> addWidget (m_QPushButton_calibration, 0, 0, 1, 1); m_QGridLayout_central-> addWidget (m_QWidget_viewfinder_holder, 1, 0, 1, 1); этом-> setCentralWidget (m_QWidget_central); m_QCameraViewfinder_viewfinder-> показать (); } Аннулируются MainWindow :: paintEvent (QPaintEvent *) {QPainter художник (это); painter.setPen (Qt :: белый); painter.setFont (QFont ( "Arial", 30)); painter.drawText (Прямоугольник (), Qt :: AlignCenter, "Qt"); } MainWindow :: MainWindow ~ () {удалить m_QPushButton_calibration; удалить m_QCameraViewfinder_viewfinder; удалить m_QCamera_required_camera; удалить m_QGridLayout_central; удалить m_QWidget_central; } Недействительного MainWindow :: handleButton () {QDebug ()
Aquarius_Girl
0

голосов
0

ответ
14

Просмотры

Qt: Weird Поведение при удалении от контура QTableView

Я пытаюсь удалить пунктирный контур, когда элемент в QTableView сфокусирован. Я нашел в других ответах, что план: 0 удалит его, но я для меня, что работает только в странных случаях: Он работает с этим (но тогда и фон имеет другой цвет, чем у не хотите): tableView- > setStyleSheet ( "QTableView :: пункт :: фокус {контур: 0; цвет фона: желтый;} QTableView {контур: 0;}"); Что не работает: tableView-> setStyleSheet ( "QTableView :: пункт :: фокус {контур: 0;} QTableView {контур: 0;}"); tableView-> setStyleSheet ( "QTableView {контур: 0;}"); tableView-> setStyleSheet ( "QTableView :: пункт :: фокус {контур: 0;}"); tableView-> setStyleSheet ( "QTableView :: пункт :: фокус {контур: 0; цвет фона: желтый;}"); Является ли это ошибка от меня, в непонимании Qt или таблиц стилей. Или это известная ошибка, или новая ошибка?
knoxfighter
1

голосов
1

ответ
2.6k

Просмотры

Как подключить Python и QML с PySide2?

Я хочу написать простое приложение рабочего стола на Ubuntu, и я подумал, что это простой способ, чтобы использовать Qt с QML, как GUI и Python как язык логики, так как я немного знаком с Python. Теперь я пытаюсь часами, чтобы каким-то образом подключить графический интерфейс и логику, но она не работает. Мне удалось соединение QML -> Python, но не наоборот. У меня есть классы Python, которые представляют свою модель данных, и я добавил кодирование и декодирование функции JSON. Так что сейчас нет базы данных SQL участвует. Но, может быть прямая связь между QML зрения и некоторые базы данных будет делать вещи проще? Так что теперь какой-то код. QML -> Python QML файл: ApplicationWindow {// главное окно ID: Название MainWindow: qsTr ( "Test") Ширина: 640 Высота: 480 сигнал tmsPrint (строка текста) Страница {ID: MainView ColumnLayout {ID: Но это лучший способ сделать это, или лучше создать класс с прорезями и использование setContextProperty, чтобы иметь возможность вызывать их напрямую, без добавления дополнительных сигналов? Python -> QML я не могу это сделать. Я пробовал разные подходы, но никто не работал, и я не знаю, какой из них лучше использовать. То, что я хочу сделать, это, например, показать список объектов и предложить средства для манипулирования данных в приложении и т.д. включает в себя Javascript: Я добавил дополнительный файл application.js с функцией просто напечатать что-нибудь, но это, вероятно, можно было бы использовать для установить контекст текстового поля и т.д. Тогда я попытался использовать QMetaObject и InvokeMethod, но только что получил ошибки с неправильными аргументами и т.д. делают ли такой подход какой-то смысл? На самом деле я не знаю JavaScript, поэтому, если он не нужен, я предпочел бы не использовать его. ViewModel подход, который я создал файл viewmodel.py из PySide2.QtCore импорта QStringListModel класса ListModel (QStringListModel): Защиту __init __ (Я): self.textlines = [ 'привет', 'хо'] супер () .__ __ INIT () и в . main.py я добавил: модель = ListModel () engine.rootContext () setContextProperty ( 'MyModel', модель) и ListView выглядит следующим образом: ListView {ширина: 180; высота: 200 Модель: MyModel Делегат: Текст {текст: model.textlines}} Я получаю сообщение об ошибке «MyModel не определена», но я думаю, что он не может работать в любом случае, так как делегаты только взять один элемент, а не список. Является ли этот подход хорошо один? и если да, то как я могу заставить его работать? Есть совершенно другой подход для манипулирования данных в целях QML? Я ценю вашу помощь! Я знаю, что в документации Qt, но я не доволен. Так может быть, я что-то отсутствует. Но PyQt, кажется, более популярной, чем PySide2 (по крайней мере, Google поиск, кажется, указывают, что) и ссылки PySide часто используют PySide1 или не QML QtQuick способ делать вещи ...
Fabian
1

голосов
2

ответ
3.4k

Просмотры

Переход от таблицы стилей по умолчанию стиля

Мне нужно, чтобы переключаться между двумя стилями в моем приложении: обычай, таблицы стилей и по умолчанию. Я пытался изменить его: qApp-> SetStyle (новый QCleanlooksStyle); но это не меняет цвета, изображения и т.д.
user988311
1

голосов
1

ответ
156

Просмотры

Maya 2018 Python + QT: Запрос стоимости импортируемого TextField

Я следовал этот учебник на использовании .ui файл из Qt Designer в плагин Maya. Он утверждает, что для того, чтобы запросить значение поля QTextEdit после того, как интерфейс был загружен в Maya, мне нужно сделать следующее: Итак, теперь, когда мы загружаем наши QT Ui внутри майи мы можем запросить текст нашей строки редактирования каждый раз, когда мы хотим, используя следующую строку кода: pm.textField ( «textFieldName», запрос = True, текст = True) Однако я не могу показаться, чтобы получить это, чтобы функционировать. Я загрузка пользовательского интерфейса следующим образом: # Загрузите наше окно и поместить его в переменный. ebWin = cmds.loadUI (uiFile = self.BE_UIpath) там нет проблем, когда я пытаюсь cmds.showWindow (ebWin), все работает и выглядит точно так же, как задумано. Теперь, когда я пытаюсь запросить QTextEdit я с именем «exportDirectoryTF», Майя утверждает, что она не существует. Я' пробовал два разных подхода: подход: # Connect функции на кнопки. exportDir = ebWin.textField ( 'exportDirectoryTF', запрос = True, текст = True), который выдает: # Ошибка: 'юникода' объект не имеет атрибута 'TextField' # # Traceback (самый последний вызов последним): # # Файл «C: /Users/Censored/Documents/maya/2018/plug-ins/EB_pi_cmds.py», строка 39, в Doit # # exportDir = ebWin.textField ( 'exportDirectoryTF', запрос = True, текст = True) # # AttributeError: ' Unicode»объект не имеет атрибута„TextField“и подход Б: импорт maya.cmds как CMDS # Connect функции для кнопок. exportDir = cmds.textField ( 'exportDirectoryTF', запрос = True, текст = True), который возвращает: # RuntimeError: Object 'exportDirectoryTF' не найден. # # Traceback (самый последний вызов последнего): # # Файл "C: /Users/Censored/Documents/maya/2018/plug-ins/EB_pi_cmds.py", строка 39, в Doit # # exportDir = cmds.textField ( 'exportDirectoryTF', запрос = True, текст = True ) # # RuntimeError: Object 'exportDirectoryTF' не найден. # Учебник имеет «pm.textField (» textFieldName «Q = True, текст = True)», и я не могу понять, где наступил „вечера“ из, если предполагается указать переменную из загрузки пользовательского интерфейса или команда майа Python TextField, или ни. Если кто-то может мне точку в правильном направлении здесь, было бы весьма признателен. # Учебник имеет «pm.textField (» textFieldName «Q = True, текст = True)», и я не могу понять, где наступил „вечера“ из, если предполагается указать переменную из загрузки пользовательского интерфейса или команда майа Python TextField, или ни. Если кто-то может мне точку в правильном направлении здесь, было бы весьма признателен. # Учебник имеет «pm.textField (» textFieldName «Q = True, текст = True)», и я не могу понять, где наступил „вечера“ из, если предполагается указать переменную из загрузки пользовательского интерфейса или команда майа Python TextField, или ни. Если кто-то может мне точку в правильном направлении здесь, было бы весьма признателен.
Design Runner
1

голосов
0

ответ
126

Просмотры

Qt5. Как загрузить схему XSD из resources.qrc?

Я хочу, чтобы загрузить схему XSD из моего файла resources.qrc. Эта часть из * .qrc: XML / My-custom.xsd Это XSD правомочно (проверено на W3C валидатор)! Я не хочу загрузить эту схему из локального файла. Потому что я хочу собрать его в качестве ресурса. Моя цель: один исполняемый файл без других файлов и не требуется установка (только с помощью * .so). Я смотрю документацию Qt (QXmlSchema), и здесь мы имеем 3 способа для загрузки: Ие нагрузки (Const QUrl и источник) BOOL нагрузки (QIODevice * источник, сопзИте QUrl & documentUri = QUrl ()) BOOL нагрузка (Const QByteArray & данные, Const QUrl & documentUri = QUrl ()) Я стараюсь: QXmlSchema схемы; schema.load (QUrl ( ": / XML / мой-custom.xsd")); Но она всегда недействительна. Я полагаю, что это недопустимое значение для QUrl. Или же? Как исправить данные передачи ресурсов в этом методе (ы) погрузок? Возможно? UPD: Извините за глупый вопрос. Оно работает: QFile SchemaData ( ": / XML / мой-custom.xsd"); QXmlSchema схемы; schemaData.open (QFile :: ReadOnly); schema.load (schemaData.readAll ());
Deep
1

голосов
0

ответ
226

Просмотры

Parent Qt to non-qt window with PyQt

Я пытаюсь родителей в QMainWindow к не кварт приложения (приложение может измениться). Есть идеи, как это сделать? Кварты окно открывается прекрасным и я могу взаимодействовать с Python API в приложениях, однако кварты окно выходит за окном приложения, если я нажимаю на приложении. Я мог бы использовать Qt.WindowStaysOnTopHint флаг, но тогда это на вершине всего, что не является идеальным. Псевдопользователь Пример: Если вы используете приложение (например, Nuke), где основное приложение также кварты на основе вы бы использовать что-то вроде: Защита _nuke_main_window (): «» «Возвращает главное окно Nuke '» «» для OBJ в QtWidgets.qApp.topLevelWidgets (): если (obj.inherits ( 'QMainWindow') и obj.metaObject () имя класса () == 'Литейный :: UI :: DockMainWindow.): возвращение OBJ еще: поднять RuntimeError ( «Не удалось найти DockMainWindow экземпляр») ВДГ = MyWidget (родитель = _nuke_main_window ()) wdg.show () Майя и любое другое окно на основе PyQt также будет работать аналогичным образом. Однако, если приложение Qt разве на основе: ВДГ = MyWidget (родитель = nonQtWindowQt_ised) wdg.show (), где: Защита nonQtWindowQt_ised (): #return главного окна программы как-то, может быть, через питон привязки, как SIP? Любые примеры (в идеале) или направление полезно было бы оценено. Использование PyQt5, Python 3.5 и Linux. #return главного окна программы как-то, может быть, через питон привязки, как SIP? Любые примеры (в идеале) или направление полезно было бы оценено. Использование PyQt5, Python 3.5 и Linux. #return главного окна программы как-то, может быть, через питон привязки, как SIP? Любые примеры (в идеале) или направление полезно было бы оценено. Использование PyQt5, Python 3.5 и Linux.
Mafster
1

голосов
1

ответ
550

Просмотры

How to set Value Axis Label Format on QML from milliseconds to mm:ss?

Фон Я использую QtCreator и у меня есть файл с именем myScopeView.qml, который представляет собой вид области действия, подобный пример, приведенный здесь. В myScopeView.qml, есть ChartView, который обновляется каждый второй с таймером, так что график изменения значения по оси X и оси Y. Ось Х представляет время, выраженное в миллисекундах (целочисленных значений), из-за сбора данных, а Y ось представляет значения напряжения (характеризуется как целые значения). Задача График показывает значения оси X, как целое, т.е. 123456789, но хотелось бы, чтобы визуализировать соответствующий мм: сс значение, т.е. 20:34. Я думаю, что я должен изменить значение labelFormat. ValueAxis {ID: axisX мин: 0 макс: 0 tickCount: 5 labelFormat: // Я надеваю» знаю, что я должен установить здесь} Вопрос Можно ли установить конкретное значение в labelFormat, чтобы иметь мм: сс визуализируется? Примечания Вместо модификация labelFormat я пытались использовать функцию Javascript для преобразования, но это решение не работает, потому что преобразование достигается до визуализации и поэтому сюжет ничего не показывает, потому что нет Y значения, связанного с новыми значениями X. Вот почему я прошу команды labelFormat, но я буду признателен также намек Javascript. Я знаю, что QML QtCharts имеет QDateTimeAxis, который обеспечивает мм: сс, но я хотел бы, чтобы преобразовать данные только для визуализации, а не для других целей. сс визуализируется? Примечания Вместо модификация labelFormat я пытались использовать функцию Javascript для преобразования, но это решение не работает, потому что преобразование достигается до визуализации и поэтому сюжет ничего не показывает, потому что нет Y значения, связанного с новыми значениями X. Вот почему я прошу команды labelFormat, но я буду признателен также намек Javascript. Я знаю, что QML QtCharts имеет QDateTimeAxis, который обеспечивает мм: сс, но я хотел бы, чтобы преобразовать данные только для визуализации, а не для других целей. сс визуализируется? Примечания Вместо модификация labelFormat я пытались использовать функцию Javascript для преобразования, но это решение не работает, потому что преобразование достигается до визуализации и поэтому сюжет ничего не показывает, потому что нет Y значения, связанного с новыми значениями X. Вот почему я прошу команды labelFormat, но я буду признателен также намек Javascript. Я знаю, что QML QtCharts имеет QDateTimeAxis, который обеспечивает мм: сс, но я хотел бы, чтобы преобразовать данные только для визуализации, а не для других целей.
titiro89
1

голосов
1

ответ
224

Просмотры

Добавить кнопку QVideoWidget

каждый! Я пытаюсь установить свойство щелчка на QMediaPlayer элемент, но я не могу найти способ сделать это, и если я пытаюсь поставить кнопку в передней части к видео, кнопка ставит позади на видео, даже с кнопку-> рейз ( ); videoWidget-> ниже (); А если я поставить кнопку на весь экран экран становится черным и не показывает видеокодек этот идентификатор код видеопроигрывателя QMediaPlayer * игрок = новый QMediaPlayer (это); QVideoWidget * оч.сл. = новый QVideoWidget (это); QMediaPlaylist * PlayList = новый QMediaPlaylist (это); PlayList-> addMedia (QUrl :: fromLocalFile ( "/ Главная / пользователь / Видео / video.mp4")); PlayList-> setPlaybackMode (QMediaPlaylist :: Loop); QVBoxLayout * макет = новый QVBoxLayout; layout-> addWidget (оч.сл.); player-> setVideoOutput (оч.сл.); player-> setPlaylist (PlayList); vw-> setGeometry (0,0,800,480); vw-> показать (); player-> играть ();
Aarón Gutiérrez
1

голосов
2

ответ
355

Просмотры

Эффективный способ сделать подобные объекты в Qt3D?

Мне нужно сделать сотни объектов, разделяющих их сетку и материал (и имеющими различные QTransforms). Единственный способ, которым я нашел, чтобы создать экземпляр QEntity для каждого из них. Каждый будет проводить экземпляр сетки и материала, в результате чего огромная трата времени и памяти. Есть ли способ сделать это более эффективным? Я знаю, что с помощью сырого OpenGL вы можете использовать меши и шейдер загружать их один раз и используя различные преобразования и параметры шейдера много раз в одном кадре. Может быть Qt3D есть что-то подобное?
Alex
1

голосов
0

ответ
39

Просмотры

Как я могу объединить QScrollBar с QFileDialog?

Я столкнулся с проблемой, когда я занимаюсь разработкой приложения на андроид платформы с использованием QT. Я увеличил FontSize компонента QFileDialog, но мобильный экран слишком мал, чтобы показать все части QFileDialog. Мне нужно QScrollBar отрегулировать положение и выберите папку. Как я могу объединить QScrollBar с QFileDialog или я могу только увеличить размер шрифта в пределах области, ограниченной красной линией, как показано ниже? Мой исходный код: пустота MainWindow :: on_pushButton_clicked () {this-> setStyleSheet ( "QFileDialog QWidget {шрифта: 20pt \" Arial \ ";}"); // QFileDialog QString реж = QFileDialog :: getExistingDirectory (это, QString () "/ шоссе / SDCard / тест /", QFileDialog :: DontUseNativeDialog); Модель = новый QFileSystemModel (); FILESPATH = каталог; модель-> setRootPath (реж); QStringList фильтр; фильтр
md612
1

голосов
1

ответ
311

Просмотры

QMAKE: Ссылка статическая библиотека против другой статической библиотеки

У меня есть проект QMAKE staticlib (libtest.a), что deppends к þér подпроекта (liblogger.a) Я пытаюсь добавить ему только до test.pro: LIBS + = -L $$ OUT_PWD /../ ЛИЭС / регистратор / -llogger PRE_TARGETDEPS + = $$ OUT_PWD /../ ЛИЭС / регистратор / liblogger.a, но, наконец, QMAKE пакет .a библиотеки без liblogger.a ар ОКК libtest.a libtest.o Я не могу использовать QMAKE_AR + = или QMAKE_LIBFLAGS + =, и мне нужно построить статическую библиотеку с этой AR команды ар ОКК libtest.a libtest.o ../libs/logger/liblogger.a любая идея?
M.A. Pons
1

голосов
0

ответ
263

Просмотры

QScrollArea стилевых с QWidget

У меня есть проблема с системой наследования родитель-ребенок Css в то время как я пытался все возможности с Ид Selector в Css. QScrollArea содержит тип модели QWidget со следующей иерархии: класс Qt иерархии Я не понимаю, даже если изменить QWidget (modelWidget) к QFrame, это ничего не меняет. вот код Css: QScrollArea # PreviewModel {цвет фона: # 282828; границы: нет; } QWidget # WidgetContents {фонового цвета: # 282828; } QWidget # modelWidget {границы: 2px твердый # 00aaff; } Вот что показывает мне: Результат Css 1 и если я удалить CSS #WidgetContents это дает мне здесь: QScrollArea # PreviewModel {цвет фона: # 282828; границы: нет; } #ModelWidget {границы: 2px твердый # 00aaff; } Результат:
Qt first
1

голосов
0

ответ
23

Просмотры

Передача строки JavaScript в C ++ в среде QtQuick

Что я пытаюсь сделать, это вызвать функцию C ++ с JavaScript, ив получил, что немного работает, я могу напечатать привет мира на консоль таким образом, однако, когда я пытаюсь передать строку в функцию, чтобы сохранить его в файл он сохраняет только пустую строку в файл. Там нет печатаемых на консоль ошибок, и программа, кажется, прекрасно работать. Heres мой код до сих пор: cppfunctions.h #ifndef CPPFUNCTIONS_H #define CPPFUNCTIONS_H #include #include #include с использованием пространства имен станд; класс CPPFunctions: общественный QObject {Q_OBJECT общественности: явные CPPFunctions (QObject * родитель = nullptr); Q_INVOKABLE недействительный WriteToFile (станд :: ofstream & файл_вывод, Int х); Q_INVOKABLE недействительным сохранить (полукокса dataDump); Q_INVOKABLE недействительный hello_world (); сигналы: публичные слоты:}; #endif // CPPFUNCTIONS_H cppfunctions.cpp #include "cppfunctions.h" # include # include с помощью патезраса; CPPFunctions :: CPPFunctions (QObject * родитель): QObject (родитель) {} недействительным CPPFunctions :: WriteToFile (станд :: ofstream & OUTPUTFILE, Int х) {OUTPUTFILE
problemlow
1

голосов
0

ответ
732

Просмотры

Отключение C ++ 11 в Qt Creator

Как отключить C ++ 11/14 в Qt Creator? Я хотел бы, чтобы скомпилировать мой проект в C ++ 98/03 код. По умолчанию он побежал GCC так: г ++ ... -std = гну ++ 11 -Wextra ... Я редактировал * .pro файл, чтобы он содержит следующее: ... CONFIG - = C ++ 11 CONFIG + = нет не -c ++ 11 не-C ++ 14 QMAKE_CXXFLAGS + = -std = C ++ 98 -pedantic ... строка компилятор стал таким: G ++ ... -std = C ++ 98 -pedantic -g -std = гну ++ 11 ... Она до сих пор компиляции в C ++ 11. Как я могу отключить поддержку C ++ 11? Составитель: MinGW 5.3.0 Qt: 5.9.0 QtCreator: 4.4.1 Спасибо за любую помощь!
Konstantin T.
1

голосов
0

ответ
86

Просмотры

Нажмите Enter излучает buttonClicked на QPushButton

Я использую C ++ с Qt. У меня есть эта проблема. У меня есть QLineBox (lineBox) и QButtonGroup (ButtonGroup) с кнопками от типа QPushButton. Когда я нажимаю войти на lineBox, сигнал buttonClicked испускается для ButtonGroup. lineBox в QGraphicView. Это QGraphicView в тот же макет, как ButtonGroup. Я не хочу, чтобы излучать ClickButton при нажатии ввода. Любые идеи, почему это случилось? Существует небольшая разница между моим вопросом и этот: Как сделать прессованной QPushButton для ввода ключа ?. Он находится в инициализации autoDefault собственности.
Vladimir Yanakiev
1

голосов
1

ответ
474

Просмотры

Динамический валидатор для TextField / Change валидатора во время выполнения

У меня есть небольшая проблема / требование о валидаторы, которые я в настоящее время не в состоянии реализовать. У меня есть простой TextField (QtQuick.Control 2), который украшен различными цветами в зависимости от состояния. Он должен также использовать другой RegExpValidator (с другим регулярным выражением) в зависимости от текущего состояния. Кто-нибудь есть идея, как я могу переключить / изменить / модифицировать RegExpValidator во время выполнения? (Например, когда нажата кнопка или onEditingFinished-событие срабатывает) Мой текущий код QML является: импорт QtQuick 2,3 импорта QtQuick.Controls 2.2, как Быстрый импорт QtQuick.Layouts 1,3 RowLayout {ID: свойство макета цвет modeColor: «WhiteSmoke» свойство цвета modeTextColor : "серый" интервал: 0 Прямоугольник {ID: Rect Layout.fillWidth: истинная Layout.minimumWidth: 100 макета. // должно перейти к другому РегВыр валидатор} еще {layout.state = "keyinput" // должна перейти к другому РегВыр валидатор} input.clear ()} Keys.onPressed: {если (== event.key Qt.Key_Escape) { layout.state = "keyinput" recttext.text = "Введите ключ" input.clear ()}}} гласит: [State {название: "keyinput" PropertyChanges {цель: расположение; modeColor: "WhiteSmoke"; modeTextColor: "серый"}}, {Государство имя: "valinput" PropertyChanges {цель: расположение; modeColor: "красный"; modeTextColor: "белый" }}] Состояние: «keyinput»} С наилучшими пожеланиями, Крис редактировать: (., Где я мог бы использовать определенную RegExpValidator для конкретного ключа) endgoal является inputline для ввода пары ключ-значение При этом следует использовать RegExpValidator для ввода ключа, например, "автор:" + Нажатие Enter (keyinput-режим) # После включения в valueinput режим, он должен использовать другой RegExpValidator: кстати. Это настольное приложение :)
ruuns
1

голосов
2

ответ
164

Просмотры

Почему функция члена MainWindow может вызвать член QLabel в Qt

Я совершенно новое в C ++ и только начал изучать Qt в C ++. Я нашел код ниже меня смущает немного. То, что это просто создать ярлык в окне. Mainwindow.cpp 1 #include "mainwindow.h" 2 #include "ui_mainwindow.h" 3 4 MainWindow :: MainWindow (QWidget * родитель): 5 QMainWindow (родительский), 6 Ui (новый Ui :: MainWindow) 7 { 8 ui-> setupUi (это); 9} 10 11 MainWindow :: MainWindow ~ () 12 {13 удаления UI; 14} 15 16 пустот MainWindow :: on_pushButton_clicked () 17 {18 ui-> label-> SetText ( "кнопка нажата"); 19 21} main.cpp 1 #include "mainwindow.h" 2 #include 3 4 INT основных (INT ARGC, символ * ARGV []) 5 {6 QApplication а (ARGC, ARGV); 7 MainWindow ш; 8 w.show (); 9 10 возврата a.exec (); 11} mainwindow.h 1 #ifndef MAINWINDOW_H 2 #define MAINWINDOW_H 3 4 5 6 #include пространство имен Ui {7 класс MainWindow; 8} 9 10 класс MainWindow: открытая QMainWindow 11 {12 13 14 Q_OBJECT общественности: 15 явная MainWindow (QWidget * родитель = 0); 16 ~ MainWindow (); 17 18 частных слотов: 19 недействительными on_pushButton_clicked (); 20 21 частное: 22 Ui :: MainWindow * щ; 23}; 24 25 #endif // MAINWINDOW_H Моя путаница щ -> label-> SetText ( "Боттон щелкают"). Мое понимание пользовательский интерфейс является частным членом MainWindow, который наследуется от QWidget. Но маркировать только член QLabel. Почему член базового класса может назвать член производного класса? или может кто-то пожалуйста, объясните мне, почему это правильно? Спасибо, ребята очень
Bin
1

голосов
0

ответ
88

Просмотры

QGraphicsPixmapItem.setScale установить границы пикселя в позиции inconsistant

Я хочу, чтобы увеличить на изображении с помощью QGraphicsPixmapItem.setScale. Однако масштабирование начинает быть очень шаткими при высоких уровнях увеличения, то есть, когда только несколько пикселей заполнить окно. Я наблюдаю то же самое явление в PyQt 4.8.7 и 5.6.0, на Windows 10, а также Ubuntu 16.10. EDIT: протестировано на более позднем PyQt 5.10, с тем же результатом. EDIT: протестированы на понятном C ++ Qt, а также, смотрите ниже. Ниже приведен пример, в котором коэффициент масштабирования управляется с помощью колеса мыши. импортировать NumPy в н.п. попробовать: от PyQt5.QtCore импорта Qt, QRectF из PyQt5.QtGui импорта QImage, QPixmap из PyQt5.QtWidgets импорта QApplication, QGraphicsScene, QGraphicsView, QMainWindow qt_ver = 5, за исключением: из PyQt4.QtCore импорта Qt, QRectF из PyQt4. QtGui импорт QImage, QPixmap из PyQt4.QtGui импорта QApplication, QGraphicsScene, QGraphicsView, масштаб + 1 = Элиф дельта <0: self.zoom - = 1 self.pixi.setScale (np.exp (self.zoom * 0,1)) = окно QMainWindow) window.setGeometry (100, 100, 900, 900) вид ( = MyGraphicsView (окно) window.setCentralWidget (вид) window.show () app.exec () похоже, что масштабирование страдает от округления проблем. Я делаю что-то неправильно? То же самое поведение в C ++, это не / питон вопрос PyQt. Мне интересно, если это может быть из-за эффект дискретизации из-за плохую точность float32? Это может быть трудно исправить. # Включить # включить # включить # включить # включить # включить # включить # включить # включить # включить # включить # включить класс MyGraphicsView: общественный QGraphicsView {частное: ИНТ _zoom = 0; станд :: вектор _im_data; QGraphicsScene * _scene = nullptr; QPixmap _pix; QGraphicsPixmapItem * _pixi = nullptr; общественности: MyGraphicsView (QWidget * Родитель): QGraphicsView (родитель) {_scene = новый QGraphicsScene (QRectF (), это); this-> setHorizontalScrollBarPolicy (Qt :: ScrollBarAlwaysOff); this-> setVerticalScrollBarPolicy (Qt :: ScrollBarAlwaysOff); этом-> setScene (_scene); _im_data.resize (100 * 100 * 3); станд :: random_device-й; станд :: mt19937 т (е ()); станд :: uniform_int_distribution Распределители (0, СТД :: numeric_limits :: макс ()); для (авто и е: _im_data) е = станд :: uint8_t (Распределители (мт)); авто-им = QImage (_im_data.data (), 100, 100, QImage :: Format_RGB888); _pix = QPixmap :: fromImage (станд :: ход (им)); _pixi = _scene-> addPixmap (_pix); _pixi-> setOffset (-50, -50); .} Недействительный wheelEvent (QWheelEvent * событие) {переопределение автоматической дельта = событийно> angleDelta () у (); если (дельта> 0) ++ _ масштабирования; иначе если (дельта <0) --_ зум; _pixi-> setScale (станд :: ехр (_zoom * 0,1)); }}; INT основных (INT ARGC, символ * ARGV []) {QApplication а (ARGC, ARGV); автоматическое окно = новый QMainWindow (); window-> setGeometry (100, 100, 900, 900); автоматический вид = новый MyGraphicsView (окно); window-> setCentralWidget (вид); окно-> показать (); вернуть a.exec (); } EDIT Может быть ошибка. Я подал QTBUG-66310. символ * ARGV []) {QApplication а (ARGC, ARGV); автоматическое окно = новый QMainWindow (); window-> setGeometry (100, 100, 900, 900); автоматический вид = новый MyGraphicsView (окно); window-> setCentralWidget (вид); окно-> показать (); вернуть a.exec (); } EDIT Может быть ошибка. Я подал QTBUG-66310. символ * ARGV []) {QApplication а (ARGC, ARGV); автоматическое окно = новый QMainWindow (); window-> setGeometry (100, 100, 900, 900); автоматический вид = новый MyGraphicsView (окно); window-> setCentralWidget (вид); окно-> показать (); вернуть a.exec (); } EDIT Может быть ошибка. Я подал QTBUG-66310.
P-Gn
1

голосов
0

ответ
116

Просмотры

Использование libgit2 с Qt и MSVC бросает неразрешенный внешний символ, но работает в проекте VC ++

Я пытаюсь скомпилировать с MSVC 2017 года 64bits приложение Qt, который использует libgit2. Попытка компиляции я получаю следующее сообщение об ошибке: Ошибка: LNK2019: неразрешенный внешний символ git_repository_init ссылки в функции магистралью. Погуглить немного я нашел ответы на эти вопросы (Qt Creator: неразрешенный внешний символ, и, как использовать libgit2 из родного C ++ приложений на Windows) Однако, после попытки решения (CMake% PATH_TO_LIBGIT2_SOURCE% -DTHREADSAFE = ON -DSTDCALL = OFF и воссоздаст) ничего не изменилось. Тогда я решил использовать ту же самую библиотеку (же сборку) с Visual Studio и Visual C ++, и я не получаю сообщение об ошибке. Visual C ++ (компилирует и работает): Int основных () {git_libgit2_init (); git_repository * репо = NULL; / * С рабочей директории: * / INT ошибки = git_repository_init (& репо, «C: / Libgit2 / включить Почему он работает с проектом Visual C ++, но не с моим проектом Qt, если они используют точно такие же библиотеки (тот же путь)? Я что-то пропустил? EDIT: Проект компилируется и работает нормально с MinGW вместо MSVC, но я хочу, чтобы использовать последний.
Abdelilah El Aissaoui
1

голосов
1

ответ
366

Просмотры

Как установить равный масштаб для осей в pyqtgraph участке?

В документации о AxisItem я нашел фразу «По умолчанию, масштабирование оси 1,0». Но при выполнении простейшей программы с линией plotWidget = pg.plot () весы для й и у различны. Как настроить их?
DSblizzard
1

голосов
0

ответ
176

Просмотры

не macdeployqt развертывания модулей QtQuick

Я использую macdeployqt развернуть одно приложения QML для Mac OS и когда я закончу со всеми путями тонких и попытаться выполнить его из .dmg сгенерированного пакета можно запустить приложение. Попытка выполнить его с термином я получаю ошибку QML, который говорит QtQuick.Window и другие модули не установлены. Любой ключ о? Это команда, которую я пробовал: $ macdeployqt MyApp.app -qmldir = / Users / JGD / DEV / MyApp его-полосной Я получаю эту ошибку: Log: Установка QML импортирует Log: Application QML поиск путь к файлу (s ) есть ( "/ Users / jngd / Devel / MyApp /") оШИБКА: ошибка выхода qmlimportscanner. Ожидаемый JSon массив, получил: ОШИБКА: «» QProcess: Разрушенный во время процесса ( «/Users/jngd/devel/Qt/5.10.0/clang_64/bin/qmlimportscanner») все еще работает.
jgd
1

голосов
0

ответ
173

Просмотры

Изменение высоты и положения иконки вкладок QToolBox, используя Proxys

Хорошо, так что я хочу, чтобы настроить высоту и положение иконок вкладок из виджета QToolBox. Я не могу сделать это с помощью таблицы стилей (я пробовал разные варианты, но никто не работал, см вопрос: Настройка QToolBox: вкладка высота), поэтому я решил дать ему попробовать с помощью прокси-сервера. Я знаю, что есть в controlElements: CE_ToolBar CE_ToolBoxTabShape CE_ToolBoxTabLabel И поэтому я могу использовать их на функцию drawControl, чтобы получить то, что я хочу. аннулированию drawControl (ControlElement oCtrElement, константный QStyleOption * poStyleOptionption, QPainter * poPainter, константный QWidget * poWidget) сопзЬ Но я не уверен, как это осуществить ... Любая помощь или пример? Спасибо, UPDATE: Я создал прокси-сервер, назначил его в QToolBox и добавил условие, чтобы увидеть, если я мог бы сделать что-то: ... ToolBoxProxy * tabStyle = новый ToolBoxProxy (); ui-> toolBox-> SetStyle (tabStyle); ... toolboxproxy.h #include #include класс ToolBoxProxy: общественный QProxyStyle {общественности: явное ToolBoxProxy (); аннулированию drawControl (ControlElement oCtrElement, константный QStyleOption * poStylrOptionption, QPainter * poPainter, Const QWidget * poWidget = 0) сопзЬ; }; toolboxproxy.cpp #include "toolboxproxy.h" #include ToolBoxProxy :: ToolBoxProxy () {} ничтожной ToolBoxProxy :: drawControl (ControlElement oCtrElement, сопзЬ QStyleOption * poStyleOptionption, QPainter * poPainter, Const QWidget * poWidget) сопзЬ {если (== oCtrElement CE_ToolBar) {QDebug () Явный ToolBoxProxy (); аннулированию drawControl (ControlElement oCtrElement, константный QStyleOption * poStylrOptionption, QPainter * poPainter, Const QWidget * poWidget = 0) сопзЬ; }; toolboxproxy.cpp #include "toolboxproxy.h" #include ToolBoxProxy :: ToolBoxProxy () {} ничтожной ToolBoxProxy :: drawControl (ControlElement oCtrElement, сопзЬ QStyleOption * poStyleOptionption, QPainter * poPainter, Const QWidget * poWidget) сопзЬ {если (== oCtrElement CE_ToolBar) {QDebug () Явный ToolBoxProxy (); аннулированию drawControl (ControlElement oCtrElement, константный QStyleOption * poStylrOptionption, QPainter * poPainter, Const QWidget * poWidget = 0) сопзЬ; }; toolboxproxy.cpp #include "toolboxproxy.h" #include ToolBoxProxy :: ToolBoxProxy () {} ничтожной ToolBoxProxy :: drawControl (ControlElement oCtrElement, сопзЬ QStyleOption * poStyleOptionption, QPainter * poPainter, Const QWidget * poWidget) сопзЬ {если (== oCtrElement CE_ToolBar) {QDebug ()
laurapons
1

голосов
1

ответ
176

Просмотры

Как слушать QQuickItem Childitem добавления

Я создал C ++ класс с QML придает свойства для использования его в QML. Теперь я хочу, чтобы добавить вложенное свойство к одному объекту QQuickItem и распространять это вложенное свойство для всех QQuickItem дочерних элементов (те, которые вернулись на QQuickItem :: childItems () не QObject :: детей ()). Я могу легко перебирать существующие QQuickItem дочерние элементы и добавить приложенные им свойства, однако я не могу узнать, как слушать добавлять / удалять дочерние элементы для определенных QQuickItem. Никаких сигналов, никаких событий только не перекрывая метод QQuickItem :: itemChange (). Как я могу слушать для добавления / удаления QQuickItem запись детей? Я нашел только QQuickItemChangeListener, но этот класс от частных API. UPD1: Реализация арестованного имущества: класс MyProp: общественный QObject {Q_OBJECT Q_PROPERTY (интермедиат проп ...) общественности: Явный MyProp (QObject * объект = nullptr): QObject (объект) {автоматический пункт = qobject_cast (объект); если (пункт) {для (авто ребенок: _item-> childItems ()) {QObject * прилагается = qmlAttachedPropertiesObject (ребенок, правда); ... // нужно слушать здесь для добавления / удаления дочерних элементов}}} статическая MyProp * qmlAttachedProperties (QObject * объект) {вернуть новый MyProp (объект); }} QML_DECLARE_TYPEINFO (MyProp, QML_HAS_ATTACHED_PROPERTIES) // нужно слушать здесь для добавления / удаления дочерних элементов}}} статическая MyProp * qmlAttachedProperties (QObject * объект) {вернуть новый MyProp (объект); }} QML_DECLARE_TYPEINFO (MyProp, QML_HAS_ATTACHED_PROPERTIES) // нужно слушать здесь для добавления / удаления дочерних элементов}}} статическая MyProp * qmlAttachedProperties (QObject * объект) {вернуть новый MyProp (объект); }} QML_DECLARE_TYPEINFO (MyProp, QML_HAS_ATTACHED_PROPERTIES)
Kamil Zaripov
1

голосов
1

ответ
238

Просмотры

Binary Tree Визуализация - круговое дерево? (QT)

Мне было интересно, если кто имеет какие-либо рекомендации по реализации алгоритма для создания «филогенетического» тип круговой: графическая сцена для бинарного дерева в QT? Что-то вроде этого: кроме со словом этикетки заменены кнопками. Я в настоящее время использую QT Elastic Nodes в качестве шаблона, и удалось создать стандартную визуализацию дерева с динамически установленных расстояний. Но хотелось, чтобы перейти к круговой форме как ссылку выше, если это возможно. Спасибо заранее.
laserfart
1

голосов
0

ответ
312

Просмотры

Неопределенные символы для архитектуры x86_64 - Linker ошибка при создании WebRTC Qt для Mac

ProcessMessages (INT) в libwebrtc.a (thread_darwin.o) .... л.д.: символ (ы) не найдено для архитектуры x86_64 лязг: ошибка: команда линкер потерпела неудачу с кодом выхода 1 (использование -v, чтобы увидеть вызова) сделать: *** [Lib ******* _ WebRTCWrapper.1.0.0. dylib] Ошибка 1 12:17:39: процесс "/ USR / бен / сделать" вышел с кодом 2. Ошибка при строительстве / развертывании проекта (комплект: Desktop Qt 5.10.0 лязг 64bit) при выполнении шага "Make" Начальные параметры : Qt Creator Основанный на Qt 5.10.0 (Clang 7.0 (Apple), 64 бит) Компилятор - Clang (C ++ 64 x 86 бит) в C ++ 11 против режима LIBC ++ MacOS - Sierra v.10.12.6 Xcode - Версия 9.2 (9C40b ) WebRTC - филиал головки / 63 После игры с опциями компиляции из WebRTC, я составил с лязгом системы и использование Libc ++. Я построил библиотеку WebRTC с параметрами: дп генераторных из / x64 / Debug --args =»
Denys Yamkovyi
1

голосов
0

ответ
61

Просмотры

Невозможно перевести графический интерфейс в QML

Я написал следующий код для загрузки файла .TS #include #include #include #include #include INT основной (интермедиат ARGC, символ * ARGV []) {#if определена (Q_OS_WIN) QCoreApplication :: SetAttribute (Qt :: AA_EnableHighDpiScaling); #endif QGuiApplication приложение (ARGC, ARGV); QQmlApplicationEngine двигателя; engine.load (QUrl (QStringLiteral ( "QRC: /main.qml"))); QTranslator переводчик; если (translator.load ( "/ перевод-qml_ge.qm")) {QDebug ()
Sanket Joshi
1

голосов
0

ответ
736

Просмотры

QML ListView - Limit the number of items displayed in the list

У меня есть ListView ListModel с 10 ListElements, я хочу ListView, чтобы отобразить первую ListElement от модели. Есть ли способ ограничить количество ListElement элементов, которые отображаются или выберите ListElement для отображения с идентификатором в данных? Пример ListModel: ListModel {ID: homeMenuModelData ListElement {имя: "Сэм Wise очень мудрый человек" номер: "555 0473"} ListElement {имя: "Билл Смит" номер: "555 3264"} ListElement {имя: «Джон Браун "номер: "555 8426"}} На ListView: ListView {anchors.fill: родитель интерактивными: ложная модель: HomeMenuModel делегат: homeMenuDelegate выделить: Rectangle {цвет: "lightsteelblue"; Радиус: 5} фокус: истинно} I» м думать что-то вроде этого было бы полезно для меня: model.clear (); для (вар я = 0; я <bookList.length; ++ я) {model.append (Booklist [I]); } ****** ****** Обновлено Принадлежит к @folibis (ниже комментариев) за предложение, хорошее объяснение здесь использования DelegateModel и filterOnGroup: Можно ли показывать только определенные показатели ListView QML в?
CLiown
1

голосов
1

ответ
511

Просмотры

How to trun on graphics acceleration (kernel-module-imx-gpu-viv) on i.Mx6Q (buildroot)?

Я ввожу эти команды на i.Mx6Q (Buildroot) с qt5 # экспорт QT_QPA_EGLFS_INTEGRATION = eglfs_viv # CinematicExperience-демо -platform eglfs демо приложение работает нормально, но он показывает: qt.qpa.egldeviceintegration: Не удалось загрузить интеграции EGL устройства «eglfs_viv» Я нашел это сказал, эта ошибка означает, что я не ускорение графики на доске. И это говорит, что мне нужно, чтобы включить ядро-модуль-IMX-ГП-Львов libgles2-mx6 libegl-mx6 Наконец, я нашел это сказало, версия ядра должна от 3.10.x до 4.1.x. Таким образом, я могу изменить его в 4.1.15, как это в конфигурационном меню (оригинальная версия 4.14.14): Ядро версия (Пользовательский Git репозиторий) (мерзавец: //git.freescale.com/imx/linux-imx.git) URL обычая хранилище (rel_imx_4.1.15_2.0.0_ga) Выборочный хранилище версия (imx_v7_mfg) имя Defconfig (доска / Freescale / imx6-sabresd / linux_qt5. фрагмент) Дополнительный фрагмент файлы конфигурации ядра двоичный формат (zImage) [*] построить устройство дерева Blob (DTB) (imx6q-sabresd) имена файлов устройств Tree Source Это компилировать успешно, но когда я разворачивать на SD-карту и попытаться запустить QT демо он показывает: qt.qpa.egldeviceintegration: Не удалось загрузить интеграции устройств EGL «eglfs_viv» MESA-ПОГРУЗЧИК: не удалось получить информацию об устройстве GBM: не удалось открыть драйвер (пути поиска / USR / Lib / DRI) GBM: Последняя dlopen ошибка: Файл не найден не удалось загрузить драйвер: Vivante drmModeGetResources не удалось Вопросы неисправностей Сегментация: Как включить ускорение графики на i.Mx6Q (Buildroot)? Есть ли включить «ядро-модуль-IMX-ГП-Вив» является правильным шаг? Если это верно, чем то, как установить ядро ​​с более низкой версией, чтобы успешно запустить QT демо? но когда я раскрываю на SD-карту и попробуйте запустить QT демо показывает: qt.qpa.egldeviceintegration: Не удалось загрузить интеграции устройств EGL «eglfs_viv» MESA-ПОГРУЗЧИК: не удалось получить информацию об устройстве GBM: не удалось открыть любой драйвер (пути поиска / USR / Lib / DRI) GBM: Последняя dlopen ошибка: Файл не найден не удалось загрузить драйвер: Vivante drmModeGetResources не удалось Сегментация Вопросы неисправностей: Как включить ускорение графики на i.Mx6Q (Buildroot)? Есть ли включить «ядро-модуль-IMX-ГП-Вив» является правильным шаг? Если это верно, чем то, как установить ядро ​​с более низкой версией, чтобы успешно запустить QT демо? но когда я раскрываю на SD-карту и попробуйте запустить QT демо показывает: qt.qpa.egldeviceintegration: Не удалось загрузить интеграции устройств EGL «eglfs_viv» MESA-ПОГРУЗЧИК: не удалось получить информацию об устройстве GBM: не удалось открыть любой драйвер (пути поиска / USR / Lib / DRI) GBM: Последняя dlopen ошибка: Файл не найден не удалось загрузить драйвер: Vivante drmModeGetResources не удалось Сегментация Вопросы неисправностей: Как включить ускорение графики на i.Mx6Q (Buildroot)? Есть ли включить «ядро-модуль-IMX-ГП-Вив» является правильным шаг? Если это верно, чем то, как установить ядро ​​с более низкой версией, чтобы успешно запустить QT демо? Файл не найден Не удалось загрузить драйвер: Vivante drmModeGetResources не удалось Вопросы неисправностей Сегментация: Как включить ускорение графики на i.Mx6Q (Buildroot)? Есть ли включить «ядро-модуль-IMX-ГП-Вив» является правильным шаг? Если это верно, чем то, как установить ядро ​​с более низкой версией, чтобы успешно запустить QT демо? Файл не найден Не удалось загрузить драйвер: Vivante drmModeGetResources не удалось Вопросы неисправностей Сегментация: Как включить ускорение графики на i.Mx6Q (Buildroot)? Есть ли включить «ядро-модуль-IMX-ГП-Вив» является правильным шаг? Если это верно, чем то, как установить ядро ​​с более низкой версией, чтобы успешно запустить QT демо?
Julia Ding
1

голосов
1

ответ
102

Просмотры

Что такое функциональное различие между этими двумя соединениями Qt сигнал-слот?

Я использую Qt 5.9.2 с Visual Studio 2015 и QtDesigner для программирования приложений с графическим интерфейсом для Windows. Я попытался подключения одного из моих действий, с помощью следующего вызова: подключение (ui.myAction, & QAction :: срабатывает, memberPtrToObjX_, & ClassX :: Run); Однако ClassX :: Run не всегда срабатывает после нажатия на MyAction в меню. Исследуя в эту проблему, я понял, что то же самое соединение сигнал-слот с использованием синтаксиса лямбда работы: подключение (ui.myAction, и QAction :: срабатывает, [это] (BOOL бег) {memberPtrToObjX _-> Run (Выполнить);}); Я довольно уверен, что оба вызова синтаксически правильно. Кроме того, оба позывных возвращает действительный QMetaObject :: Connection, если я сохранить возвращаемое значение и проверьте с оператором BOOL (). Очевидно, что я мог бы просто придерживаться рабочей лямбды-версия, но я м спутать и предпочли бы знать причину моего «решения». Есть ли функциональное различие между этими двумя вызовами, что объясняет различное поведение?
Don-Umbro
1

голосов
1

ответ
60

Просмотры

Могу не удаленный запуск QT камеры Пример на i.Mx6Q

Это выход приложения, при запуске приложения: ш: / корень / камеры: не нашел приложение закончил с кодом выхода 127. Как исправить эту проблему? Благодаря окружающей среде Я использую Buildroot «imx6-sabresd_qt5_defconfig» и добавление «OpenSSH», «GDB» И следующее, что я создал Qt Creator для i.Mx6Q: Инструменты> Настройки> Build & Run> Компиляторы Имя: imx6 Buildroot НКУ Buildroot / выход / хозяин / USR / BIN / Арм-Buildroot-Linux-uclibcgnueabihf-г ++ Tools> Options> Build & Run> Debuggers Имя: IMX6 Buildroot GDB Buildroot / выход / хозяин / USR / бен / рычажного Buildroot-линукс-uclibcgnueabihf -gdb Инструменты> Опции> Build & Run> версии Qt Version Имя: Qt% {Qt: Version} (Buildroot) Buildroot / выход / хозяин / USR / бен / QMAKE camera.pro + target.path = / корень + УСТАНА- + = цель - цель.
Julia Ding
1

голосов
0

ответ
120

Просмотры

Полноэкранное приложение QML и сенсорный экран активность фона RPI

Я работаю с QML на RPI. У меня есть проблемы с сенсорным экраном. Я использую Qt 5.9.1 и подключение RPI с VNC. Когда я отлаживать свои приложения с графическим интерфейсом, они всегда работают в полноэкранном режиме на сенсорном экране, и я не могу видеть окно приложения на VNC. Я в порядке с только работает в полноэкранном режиме и не видя на VNC, но если я прикасаюсь к экрану можно достичь за окном приложения. Я имею в виду, когда приложение активно я могу случайно открытые настольные приложения или изменить рабочий стол папку. Я не хочу, чтобы родной-строить Qt снова, потому что это занимает так много времени с RPI. Как может мой сенсорный экран работает только в окне QML? Спасибо за ответы. Вот main.cpp; # include "ae2.h" INT основных (INT ARGC, символ * ARGV []) {QGuiApplication приложение (ARGC, ARGV); QQmlApplicationEngine двигателя; engine.load (QUrl (QStringLiteral ( "QRC: /main.qml"))); если (двигатель. . RootObjects () IsEmpty ()) возвращает -1; Àe2 таймер; QQmlContext * CTX = engine.rootContext (); ctx-> setContextProperty ( "benimHaberciReferansı", и таймер); вернуть app.exec (); } Основной QML: импорт QtQuick 2.9 импорта QtQuick.Window 2.2 импорта QtQuick.Controls 1.3 импорта QtQuick.Window 2.2 импорта QtQuick.Dialogs 1.2 импорта QtQuick.Layouts 1.1 ApplicationWindow {название: qsTr ( "Тесла Модель S спидометр") ширина: 800 // 1400 высота: 480 // 600 видно: истинный цвет: "черный" LeftElement {ID: leftRect у: 50 х: 0 ширина: parent.width / 2 высота: 475} {RightElement ID: rightRect у: 50 х: 400 ширина: родитель. ширина / высота 2: 475} {QtObject свойство вар языкового стандарт: Qt.locale () Дата недвижимости CurrentDate: новая Дата () строковое свойство DateString строкового свойства TimeString Component.onCompleted: {DateString = currentDate.toLocaleDateString (); TimeString = currentDate.toLocaleTimeString (); }} Изображение {ширина: высота parent.width: parent.height источник: "/pics/Background.png"} / * Колонка {ID: ключ1 у: 100 х 700 Переключатель {проверено: истинно} Текст {текст: «Mod1 "font.pixelSize: 26 font.bold: истинный цвет: "белый"
Serkan
0

голосов
0

ответ
5

Просмотры

л.д. не может найти библиотеку «GLESv2»

Я Тринг кросс-компиляции Qt 5.7.1 для Raspberry Pi 3 модели B от Arch Linux (64bits) хоста. Таким образом, в этой цели, я отслеживаю этот учебник: https://www.raspberrypi.org/forums/viewtopic.php?t=204529#p1269019. Но, когда я выполнить эти команды в «/ Opt / qt5pi / qt5build /» Каталог: ../qt-everywhere-opensource-src-5.7.1/configure -не использование золота линкер -opengl es2 -device Linux -rpi3-г ++ -device-вариант CROSS_COMPILE = рычажного линукс-gnueabihf- -sysroot / опт / qt5pi / SYSROOT -prefix / USR / местные / qt5pi -opensource -confirm-лицензия -skip qtwebengine -skip QtScript -nomake примеры -make LIBS сделать компоновщик отправить эту ошибку: инструменты / рычажного bcm2708 / НКУ-Линаро-рычажного линукс-gnueabihf-raspbian-x64 / ARM-Linux-gnueabihf / бен / LD: не может найти -lGLESv2
allebas
1

голосов
1

ответ
224

Просмотры

Get QJsonObjects from QJsonarray without array name

для (INT х = 0; х <query.record () рассчитывать ();. х ++) {recordObject.insert (. query.record () FIELDNAME (х), QJsonValue :: fromVariant (query.value (х))) ; } RecordsArray.push_back (recordObject); } Json.setArray (recordsArray); вернуть json.toJson (); как я могу получить FName, LName от всех динамических объектов. я хочу использовать Qt класс, потому что я творю на стороне клиента для андроида в Qt. Я использую QT5.9.2 на окнах любой пример ........ для (INT х = 0; х <query.record () рассчитывать ();. х ++) {recordObject.insert (. query.record () FIELDNAME (х), QJsonValue :: fromVariant (query.value (х))) ; } RecordsArray.push_back (recordObject); } Json.setArray (recordsArray); вернуть json.toJson (); как я могу получить FName, LName от всех динамических объектов. я хочу использовать Qt класс, потому что я творю на стороне клиента для андроида в Qt. Я использую QT5.9.2 на окнах любой пример ........ я хочу использовать Qt класс, потому что я творю на стороне клиента для андроида в Qt. Я использую QT5.9.2 на окнах любой пример ........ я хочу использовать Qt класс, потому что я творю на стороне клиента для андроида в Qt. Я использую QT5.9.2 на окнах любой пример ........
Bino Royals
1

голосов
0

ответ
92

Просмотры

Где ядро ​​свалка в питоне многопоточных приложений Qt взялись?

Настройка Я работаю над приложением, используя Qt и Python с потоками и experiance occational дампы. Я разделась свой код до минимального рабочего примера, и хотел бы знать, что может быть причиной дампов ядра. Мое приложение имеет следующие цели: мне нужно обрабатывать compuational дорогостоящей задачи в separat потоке. Я использую модуль поточного питона для создания потока. Каротаж, что происходит в этом потоке должны быть визуализированы в GUI поток должен отправлять данные в графический интерфейс, который также должен быть визуализированы Моя установка выглядит следующим образом: Logging я создал новый обработчик протоколирования, который присоединен к регистратору и отправляет сообщение в журнал через очередь к основной теме: класс TextEditHandler (logging.Handler): Защита __init __ (самость, очередь): супер (TextEditHandler, сам) .__ INIT __ (logging.INFO) самостоятельно. Очередь = очереди Защиты испускают (я, запись): self.queue.put (self.format (запись)) GUI я использую QDialog для графического интерфейса пользователя, который создается из главного окна моего приложения. QDialog имеет следующие задачи: Он держит QTextEdit, который отображает сообщения журнала и данные Он создает очередь журнала и присоединяет TextEditHandler к регистратору и проходит очередь журнала в TextEditHandler Это создает QTimer, который вызывает в фиксированной Intervall и чеках очередь журнала, а также очередь потока новых сообщений журнала / данные. Это создает поток, а также очереди потока, в котором данные передаются из потока. С точки зрения кода выглядит следующим образом: класс Dialog (QtGui.QDialog): Защиту __init __ (Я): супер (Dialog, самость) .__ INIT __ () self.logWidget = QtGui.QTextEdit () self.logWidget. формат (я)) queue.put (я ** 2) Таймер Таймер обратного вызова методов следует сделать следующее: Необходимо проверить очередь протоколирования новых сообщений журнала и передать их в виджете QTextEdit. Кроме того, очередь нитка должна быть проверена и полученные данные обрабатываются для того, чтобы таймер не блокировать нужно проверить очереди не блокирующие (queue.get (False)). С точки зрения кода выглядит следующим образом: Защиту TimerCallback (Я): попробуйте: войти = self.loggingQueue.get (False) self.logWidget.append (журнал) курсор = self.logWidget.textCursor () cursor.movePosition (QtGui.QTextCursor .END) self.logWidget.setTextCursor (курсор), за исключением Queue.Empty: пропуск попробовать: данные = self.threadQueue.get (False) печать ( "Data: {}". формат (данные)), за исключением Queue.Empty: Отсутствует код возврата для регистрации MWE импорта из PySide импорта QtCore, QtGui Очередь импорта время импорта потоковая импорта, если __name__ == "__main__": logging.basicConfig (уровень = logging.INFO) приложение = QtGui.QApplication ([ "тест"]) диалог = Dialog () dialog.show () app.exec_ () Вопросы Рулонные примерно каждые 10-15 раз дамп ядра встречается, а у меня есть ощущение, что что-то делать с моей реализации многопоточности. Я довольно новый для многопоточных программ и буду признателен за любую подсказку, помощь или предложения вы могли бы иметь. Я также дал класс QThread попробовать, но нашел питон нить легче понять. Разная версия Python: 2.7.14 PySide версия: 1.2.4 код выполняется в нормальной консоли, если она выполняется внутри IDE (PyCharm) проблема не воспроизводимость.
Woltan

Просмотр дополнительных вопросов

Связанные вопросы