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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 [2] 3
16  Qt / Вопросы новичков / Re: Градиент цвета : Август 30, 2017, 17:38
minC, maxC - начальный и конечный цвета для градиента. Ссылка - чтобы не происходило копирования.
minV, maxV - задают диапазон значений.
val - значение (лежащее в диапазоне minV <= val <= maxV) для которого надо рассчитать промежуточный цвет.


Код
C++ (Qt)
QRgb Interpolate( const QRgb & minC, const QRgb & maxC, qreal minV, qreal maxV, qreal val )
{
 qreal w1 = (val - minV) / (maxV - minV);  // вес maхC
 return qRgb(qRed(minC) * (1 - w1) + qRed(maxC) * w1,
                   qGreen(minC) * (1 - w1) + qGreen(maxC) * w1,
                   qBlue(minC) * (1 - w1) + qBlue(maxC) * w1);
}

Для Qt так будет верно?
Interpolate(Qt::green, Qt::red, 0, 255, 44);

17  Qt / Вопросы новичков / Re: Градиент цвета : Август 30, 2017, 16:55
Есть простая арифметическая операция, называется взвешивание или интерполяция.
Код
C++ (Qt)
QRgb Interpolate( const QRgb & minC, const QRgb & maxC, qreal minV, qreal maxV, qreal val )
{
 qreal w1 = (val - minV) / (maxV - minV);  // вес maхC
 return qRgb(qRed(minC) * (1 - w1) + qRed(maxC) * w1,
                   qGreen(minC) * (1 - w1) + qGreen(maxC) * w1,
                   qBlue(minC) * (1 - w1) + qBlue(maxC) * w1);
}
[/quote]

Не могу понять
1. что значит maxC и minV?  И почему они по ссылке передаются?
2. что значить minV и maxV?   
3. val что это?
Помогите!
18  Qt / Вопросы новичков / Re: Как прекратить цикл for после закрытия приложения : Август 14, 2017, 18:49
Ilya_181, Не менял ли ты настройку quitOnLastWindowClosed у QApplication?

И ещё:
приведи код функции main()

Ничего нигде не менял.
Код
C++ (Qt)
       #include "mainwindow.h"
       #include <QApplication>
 
       int main(int argc, char *argv[])
       {
           QApplication a(argc, argv);
           MainWindow w;
           w.show();
 
           w.move(444,55);
           return a.exec();
       }
-----------------------------------------------------------------------------------------------------------
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
 
#include <QtWidgets>
#include <QWidget>
#include <QMessageBox>
#include <QTextEdit>
#include <QPushButton>
#include <QDir>
#include <QTextCursor>
#include <QVBoxLayout>
#include <QApplication>
 
class MainWindow : public QWidget
{
   Q_OBJECT
 
 
public:
   explicit MainWindow(QWidget *parent = 0) : QWidget(parent)
   {
       lay->addWidget(pushButton);
       lay->addWidget(textEdit);
       setLayout(lay);
       connect(pushButton, &QPushButton::clicked,this, &MainWindow::on_pushButton_clicked);
   }
   ~MainWindow(){}
 
QPushButton *pushButton = new QPushButton;
QTextEdit *textEdit = new QTextEdit;
QVBoxLayout *lay = new QVBoxLayout;
 
 
   void func(QDir dir)
   {
       foreach (QFileInfo fileInfo, dir.entryInfoList())
       {
           QApplication::processEvents();
 
               QTextCursor cursor = textEdit->textCursor();
               cursor.insertText(fileInfo.absoluteFilePath());
 
               if(fileInfo.isDir() && fileInfo.baseName() != "" && fileInfo.baseName() != "."
                                                               && fileInfo.baseName() != "..")
               func(QDir(fileInfo.absoluteFilePath()));
 
        }
   }
 
public slots:
   void on_pushButton_clicked()
   {
       func(QDir("D:/Programing/4.8/chapter41"));
       QMessageBox::information(this, "Title","Конец!");
   }
 
};
 
#endif // MAINWINDOW_H
 
 

добавил еще .h фаил. Запускаю и все выше описанное происходит. Можно скопировать код и запустить и проверить. Только каталог помять.
19  Qt / 2D и 3D графика / QGraphicsView selection-background-color : Август 12, 2017, 21:19
У меня есть ui->graphicsView на котором установлена сцена, а на сцену добавлены QGraphicsTextItem.
Проблема я не могу никак изменить цвет выделения текста на элементах сцены.

Код
C++ (Qt)
this->setStyleSheet("selection-background-color: red"); // работает, но только не влияет на graphicsView
---------------------------------------------------------------------------------------------------------------------------------------
ui->graphicsView->setStyleSheet("selection-background-color: red"); // не работает, может я что-то не то понимаю

Подскажите как мне сделать. Возможно что нужно переопределять в QGraphicsTextItem?
20  Qt / Пользовательский интерфейс (GUI) / Re: QTextEdit - выделение текста с помощью QTextCursor и функция setCharFormat() : Август 12, 2017, 12:34
QTextCursor cursor = edit->textCursor();

// выделили текст и установили выделение желтым
cursor.select(QTextCursor::Document);
edit->setStyleSheet("selection-background-color: yellow");

// в какой-то функции вернули обратно синий цвет выделения
edit->setStyleSheet("selection-background-color: blue");
21  Qt / Вопросы новичков / Re: Динамическое создание обьектов : Август 12, 2017, 11:49
Ilya_181, важное НЕпонимание у тебя по поводу "Графического представления".
В нём элементам устанавливают родителя только для того, чтобы получить иерархию графических элементов, а не системы удаления объектов.

Т.е. если есть два элемента Item1 и Item2,
1. оба не имеют родителя, после добавления обоих на сцену, сцена станет их владельцем - она удалит их сама, когда сработает деструктор сцены. Теперь командуешь первому элементу "повернись на 90 град", он, и только он повернётся на 90 град. Второй элемент останется неизменным.
2. Элемент Item1 является родителем для Item2, чтобы добавить оба на сцену, достаточно добавить только родительский элемент на сцену, дочерний попадёт на сцену автоматически.  Теперь командуешь первому элементу "повернись на 90 град", он одновременно со своими детьми повернётся на 90 град.

Тоже самое касается операций выделения (выделил родителя выделятся и его дети), перемещения (перемещаешь родителя - дети в месте с ним перемещаются).

Важно:
QGraphicsltem - не является наследником QObject, поэтому в графических элементах отсутствует механизм "сборки мусора" (автоматического удаления объектов), кроме случая, когда элементы находятся на сцене, тут уже сцена удаляет всё своё содержимое.
Спасибо. Я понял. Тему можно закрывать.
22  Qt / Вопросы новичков / Re: Как прекратить цикл for после закрытия приложения : Август 12, 2017, 11:40
У тебя проблема где-то в другом месте.
Проблема здесь QApplication::processEvents();. Но processEvents() нужен для того чтобы приложение реагировало на действия пользователя во время выполнения цикла. Если его закомментировать программа зависает пока не выполнится код. А такое поведение программы не нужно.

Более того, если вызвать слот дважды, нажать на кнопку два раза, код программы выполниться дважды. Видимо за время между первым нажатием кнопки и вторым успевает выполниться строка QApplication::processEvents(); в цикле. То есть я нажимаю первый раз кнопку, мы попадаем в цикл, и когда я нажму еще раз кнопку, QApplication::processEvents(); запомнит событие и выполнит нажатие кнопки после окончания цикла, что в свою очередь, повлечет выполнение кода еще раз.

И если закрыть окно, QApplication::processEvents(); продолжает выполнять код.
23  Qt / Вопросы новичков / Re: цикл for после закрытия приложения : Август 11, 2017, 11:52
Закрывайте приложение через QApplication::quit()

Если я правильно понял, это не работает.
Код
C++ (Qt)
MainWindow::~MainWindow()
{
   QApplication::quit();
   delete ui;
}
 
--------------------------------------------------------------------------------
void MainWindow::closeEvent(QCloseEvent *event)
{
   Q_UNUSED(event);
   QApplication::quit();
   QMainWindow::closeEvent(event); // если закомментировать тут, все-равно  результат отрицательный
}
24  Qt / Вопросы новичков / Как прекратить цикл for после закрытия приложения : Август 11, 2017, 10:50
Как прекратить выполнение цикла for, foreach после закрытия приложения.
Код
C++ (Qt)
void MainWindow::func(QDir dir)
{
   foreach (QFileInfo fileInfo, dir.entryInfoList())
   {
       QApplication::processEvents();
 
           QTextCursor cursor = ui->textEdit->textCursor();
           cursor.insertText(fileInfo.absoluteFilePath());
 
           if(fileInfo.isDir() && fileInfo.baseName() != "" && fileInfo.baseName() != "." && fileInfo.baseName() != "..")
           func(QDir(fileInfo.absoluteFilePath()));
 
    }
}
 
void MainWindow::on_pushButton_clicked()
{
   func(some_dir);
   QMessageBox::information(this, "Title","Конец!");
}

Если несколько раз вызвать слот (on_pushButton_clicked()), функция вызовется несколько раз, а там еще рекурсия. Если преждевременно закрыть приложение, мало того что будет продолжаться выполнение кода, так еще QMessageBox будет периодически мигать.
Что сделать, чтобы по желанию пользователя можно было прекратить любое выполнение участка кода?
25  Qt / Вопросы новичков / Re: Файлы .cpp : Август 10, 2017, 15:13
Кажется, без костылей тут не обойтись.
Можно, конечно, прописать в tools->options->c++->file naming-> sources->search paths все пути к исходникам и по F4 переключаться.
Но зачем это всё нужно?
Если прописать путь как вы посоветовали, то работает. Но проблема в том что нужно прописывать абсолютный путь (D:\Qt5.6.2\src\widgets\widgets). Это плохо потому что прописать все пути я быстрее с ума сойду, там столько каталогов... Есть вариант какой-то чтобы я написал только (D:\Qt5.6.2\src)  путь к папке исходников (src), а QtCreator  пусть ищет по каталогам?

В крайнем случае я все повытаскиваю с каталогов и скопирую все (.cpp) в одну папку. После можно будет подключить эту папку и будет все работать. Вручную конечно долго будет, напишу может батник, но батники не умею, напишу прогу на Qt. Но перед этим, может кто знает более простой вариант?
26  Qt / Вопросы новичков / Re: Файлы .cpp : Август 10, 2017, 11:22
Скачал исходники только по этой ссылке http://download.qt.io/archive/qt/5.6/5.6.2/single/. Теперь, можно как-то сделать чтобы они открывались в QtCreator через F2? Куда нужно скинуть файлы, и что прописать в QtCreator, может кто знает?
27  Qt / Вопросы новичков / Re: Файлы .cpp : Август 09, 2017, 15:08
Цитировать
Тогда запустите "Qt Maintenance Tool" и там можно добавлять/удалять компоненты.
Я так понял снова скачать "Qt Maintenance Tool" и добавить/удалить компоненты
28  Qt / Вопросы новичков / Re: Файлы .cpp : Август 09, 2017, 14:59
Пытался найти файлы в папке где установлен Qt, не нашел.

А как устанавливали Qt? Если с помощью "Qt Online Installers" ("Qt Maintenance Tool"), то там для заданной версии Qt нужно отметить компонент "Sources".
Я уже не помню, но скорее всего через "Qt Online Installers". По видимому я не отметил компонент "Sources".
29  Qt / Вопросы новичков / Re: Файлы .cpp : Август 09, 2017, 14:56
Можно отдельно скачать архив с исходниками Qt для получения cpp. У вас же, скорее всего результат сборки Qt, т.е. библиотечные файлы и заголовочные.
То есть что значит "библиотечные файлы"? У меня все работает, все проекты компилируются, и в тоже время отсутствуют исходники. Как же тогда работают классы без исходников?
30  Qt / Вопросы новичков / Файлы .cpp : Август 09, 2017, 14:41
Подскажите где находятся файлы реализации(.cpp) библиотеки Qt?
В заголовочный файл я могу попасть через F2 в QtCreator-е. Хочу посмотреть (.сpp) файлы различных виджетов и классов (QWidget, QComboBox, QTextCursor...). Клавиша F4 "переключить заголовочный/исходный " не переключает.  Так же как и shift F2 "переключить объявление/реализацию функции функции" не работает. Через F2 попадаю только в (.h) файлы.
Пытался найти файлы в папке где установлен Qt, не нашел.
Страниц: 1 [2] 3

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