Просмотр сообщений
|
Страниц: [1] 2
|
2
|
Qt / 2D и 3D графика / Создание редактируемого поля
|
: Июль 05, 2021, 12:52
|
Здравствуйте. Мне нужно создать редактируемое поле на графической сцене, чтобы можно было туда записывать числа. Как это можно сделать? Т.е это должен быть вектор типа 'знакоместо'? Какой тип использовать? QPlace не поддерживается. private: QVector<'Знакоместо'> items[2];
|
|
|
3
|
Qt / Общие вопросы / Как анимировать нарисованную фигуру?
|
: Март 29, 2021, 20:43
|
Здравствуйте. Прошу помочь. Как можно реализовать простую анимация изменения размера прямоугольника при нажатии на кнопку? Необходимо использовать только QVariantAnimation. В интернете мало примеров работы с ним. void MainWindow:: paintEvent(QPaintEvent *) { // Алгоритм построения изображения: // Создаем объект-"художник" и привязываем его к контексту виджета QPainter painter(this); // Включаем сглаживание линий painter.setRenderHint(QPainter::Antialiasing, true); // Маленький прямоугольник (участок цепи) QBrush br(QColor(0, 255, 0), Qt::DiagCrossPattern); // Создаём кисть(для заливки фигуры) painter.setBrush(br); painter.drawRect(225, 120, 100, 50); // Рисуем прямоугольник } void MainWindow::on_pushButton_clicked() { // Создаём анимацию QVariantAnimation* animation = new QVariantAnimation(this); animation->setDuration(5000); animation->setStartValue(QRect(225, 120, 100, 50)); // Задаём начальное значение animation->setEndValue(QRect(225, 120, 200, 100)); // Задаём конечное значение connect(animation, &QVariantAnimation::valueChanged, [this](QVariant value) { //..Не понимаю, что нужно делать update(); }); // Запускаем анимацию animation->start(); }
|
|
|
5
|
Qt / 2D и 3D графика / Анимация простого прямоугольника при нажатии на кнопку. QVariantAnimation. QRect
|
: Март 26, 2021, 11:42
|
Здравствуйте. Прошу помочь. Как можно реализовать простую анимация изменения размера прямоугольника при нажатии на кнопку? Необходимо использовать только QVariantAnimation. В интернете мало примеров работы с ним. void MainWindow:: paintEvent(QPaintEvent *) {
// Алгоритм построения изображения:
// Создаем объект-"художник" и привязываем его к контексту виджета QPainter painter(this);
// Включаем сглаживание линий painter.setRenderHint(QPainter::Antialiasing, true);
// Маленький прямоугольник (участок цепи)
QBrush br(QColor(0, 255, 0), Qt::DiagCrossPattern); // Создаём кисть(для заливки фигуры) painter.setBrush(br);
painter.drawRect(225, 120, 100, 50); // Рисуем прямоугольник
}
void MainWindow::on_pushButton_clicked() {
// Создаём анимацию
QVariantAnimation* animation = new QVariantAnimation(this);
animation->setDuration(5000);
animation->setStartValue(QRect(225, 120, 100, 50)); // Задаём начальное значение
animation->setEndValue(QRect(225, 120, 200, 100)); // Задаём конечное значение
connect(animation, &QVariantAnimation::valueChanged, [this](QVariant value) { //..Не понимаю, что нужно делать
update(); });
// Запускаем анимацию animation->start();
}
|
|
|
6
|
Qt / 2D и 3D графика / Re: QPainter. File not found: moc_mainwindow.cpp. В чем проблема?
|
: Март 23, 2021, 20:47
|
MYPLOT.pro
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11
# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \ main.cpp \ mainwindow.cpp
HEADERS += \ mainwindow.h
FORMS += \ mainwindow.ui
# Default rules for deployment. qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target
Вот содержимое папки:
|
|
|
7
|
Qt / 2D и 3D графика / QPainter. File not found: moc_mainwindow.cpp. В чем проблема?
|
: Март 23, 2021, 20:32
|
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QPainter> QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private: Ui::MainWindow *ui; protected: void paintEvent(QPaintEvent *) override; }; #endif // MAINWINDOW_H Не понимаю, в чём проблема. При запуске проекта выводит эти ошибка. Я создал новый проект в пустой папке? Что пошло не так? При подключении <QPainter> почему-то подчеркивается красным.
|
|
|
8
|
Qt / Пользовательский интерфейс (GUI) / Re: Динамическое заполнение формы на основе значений, введенных пользователем.
|
: Март 16, 2021, 21:00
|
void MainWindow::on_pushButton_clicked() { for(int i =0 ; i < 3; i++) { box1 = new QCheckBox; ui ->verticalLayout->addWidget(box1); box1 ->setChecked(true); connect(box1, SIGNAL(clicked()), this, SLOT(on_pushButton2_clicked())); } }
void MainWindow::on_pushButton2_clicked() {
for(QCheckBox*box : findChildren<QCheckBox*>()) { box->setChecked(false); connect(box, SIGNAL(clicked()), this, SLOT(on_pushButton3_clicked()));
}
}
void MainWindow::on_pushButton3_clicked() { for(QCheckBox*box : findChildren<QCheckBox*>()) { box->setChecked(true); connect(box, SIGNAL(clicked()), this, SLOT(on_pushButton2_clicked()));
}
}
Спасибо, работает! Дай Бог тебе здоровья.
|
|
|
9
|
Qt / Пользовательский интерфейс (GUI) / ДИНАМИЧЕСКОЕ создание и удаление виджетов QCheckBox
|
: Март 16, 2021, 20:08
|
Всем привет. Нужна помощь. Необходимо добавить возможность удаления динамически созданных виджетов QCheckBox. Т.е я сначала заполняю форму определенным количеством QCheckBox, а затем, при нажатии на любой из них, они должны удаляться. Как такое провернуть? void MainWindow::on_pushButton_clicked() {
for(int i =0 ; i < 3; i++) { box1 = new QCheckBox; ui ->verticalLayout->addWidget(box1); box1 ->setChecked(true); connect(box1, SIGNAL(clicked()), this, SLOT(on_pushButton2_clicked()));
}
}
void MainWindow::on_pushButton2_clicked() { for(int i=0; i<3; i++) { ui->verticalLayout->removeWidget(box1);
} }
|
|
|
11
|
Qt / Пользовательский интерфейс (GUI) / Re: Динамическое заполнение формы на основе значений, введенных пользователем.
|
: Март 16, 2021, 16:56
|
void MainWindow::on_pushButton_clicked() { for(int i = 0; i < 3; i++) { box = new QCheckBox(this); ui ->verticalLayout->addWidget(box); // Добавление box->setChecked(true); // Устанавливаем галочку по умолчанию connect(box, SIGNAL(clicked()), this, SLOT(on_pushButton2_clicked())); connect(box, SIGNAL(clicked()), this, SLOT(on_pushButton3_clicked())); } } void MainWindow::on_pushButton2_clicked() { for(int i = 0; i < 3; i++) { ui->verticalLayout->removeWidget(box); } } void MainWindow::on_pushButton3_clicked() { for(int i = 0; i < 3; i++) { box = new QCheckBox(this); ui ->verticalLayout->addWidget(box); // Добавление box->setChecked(false); // Устанавливаем галочку по умолчанию } } Т.е нужно как-то связать один QCheckBox со всеми остальными или лучше удалить все QCheckBox и заново заполнять окно новыми боксами без галочки/ с галочкой ?
|
|
|
|
|