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

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Внешний вид формы  (Прочитано 5615 раз)
taifun
Гость
« : Май 05, 2013, 16:07 »

День добрый! Столкнулся с тем, что в разных версиях библиотеки Qt (если я правильно понимаю) по-разному отображается приложение (см. вложения). Снимок2.png получен при использование qt 5. Подскажите где и что нужно настраивать, чтобы получить результат как на снимок1.png?
Записан
Bepec
Гость
« Ответ #1 : Май 05, 2013, 16:54 »

у вас просто разные стили, на мой взгляд.
Записан
Hellrider
Гость
« Ответ #2 : Май 05, 2013, 17:17 »

Если используются встроенные стили, то вроде как в Qt5 убрали их и оставили один какой то...
Записан
taifun
Гость
« Ответ #3 : Май 06, 2013, 08:07 »

Если используются встроенные стили, то вроде как в Qt5 убрали их и оставили один какой то...
.... какой-то убогий на мой взгляд, причем больше всего напрягает толщина линий сетки. Я не разбираюсь, но предполагаю что используются встроенные (в Qt) стили, так как в ОС ничего не меняю.
Записан
Bepec
Гость
« Ответ #4 : Май 06, 2013, 11:24 »

Если вы хотите сказать, что оба скриншота сделаны в одной программе с одними настройками, то вынужден вам заявить - НЕ ВЕРЮ.

Ширина линий которые рисуете вы, зависит только от вашего кода, а не от стиля приложения.
Записан
taifun
Гость
« Ответ #5 : Май 06, 2013, 14:25 »

Если вы хотите сказать, что оба скриншота сделаны в одной программе с одними настройками, то вынужден вам заявить - НЕ ВЕРЮ.

Ширина линий которые рисуете вы, зависит только от вашего кода, а не от стиля приложения.

Скриншоты сделаны с одной и той же программы (программный код один и тот же, ширину линии не настраивал вообще). В ОС (Fedora) была предустановленная Qt 4.8.1, потом я установил Qt 5.0.2. Оба снимка сделаны в течении минуты, код не менялся, менялась только версия библиотеки.
Записан
Bepec
Гость
« Ответ #6 : Май 06, 2013, 14:51 »

Значит ваш код зависим от стиля. И это написали вы Подмигивающий

PS ну не может линия длиной в 100 пикселей и шириной в два пикселя менять свою ширину. Но если при рисовке использовались стили - и не такое может быть.

PPS и вообще, выложите код. Нечего людям мозг ломать своими линиями Веселый
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #7 : Май 06, 2013, 15:26 »

Может, там полно багов с CosmeticPen и не только. Скорее всего, тонкие линии в Qt4 - результат какого-то бага пейнтера.
Записан
Bepec
Гость
« Ответ #8 : Май 06, 2013, 16:21 »

Хм. А если взять за отсчёт то, что квадраты - это возможно виджеты? Показает язык Тогда всё становится яснее.

Код. Нужно больше кода!
Записан
taifun
Гость
« Ответ #9 : Май 06, 2013, 22:55 »

Код:
#include "mform.h"
#include "ui_mform.h"

mform::mform(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::mform)
{
    ui->setupUi(this);
   

    createConnections();

    ui->graphView->setScene( &sceneField );
    ui->graphView->setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff );
    ui->graphView->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff );

    createField();
}

mform::~mform()
{
    delete ui;
}

void mform::createConnections()
{
    connect(ui->spWidth, SIGNAL(valueChanged(int)), this, SLOT(createField()));
    connect(ui->spHeight, SIGNAL(valueChanged(int)), this, SLOT(createField()));

    //connect(ui->spWidth, &QSpinBox::valueChanged, this, &mform::createField);
    //QObject::connect(ui->spHeight, &QSpinBox::valueChanged, this, mform::createField());

}

void mform::resizeEvent(QResizeEvent *event)
{
    ui->graphView->fitInView( sceneField.sceneRect(), Qt::KeepAspectRatio);
    QWidget::resizeEvent(event);
}

bool mform::event(QEvent *event)
{
    if ( event->type() == QEvent::Show )
        ui->graphView->fitInView(sceneField.sceneRect(), Qt::KeepAspectRatio);

    return QWidget::event(event);
}


void mform::createField()
{
    deleteField();


    const int sizeCell = 10;
    fieldCells.resize( ui->spHeight->value() );
    bArrCells.resize( ui->spHeight->value() );


    for (int y = 0; y < ui->spHeight->value(); y++)
    {
        fieldCells[y].resize( ui->spWidth->value() );
        bArrCells[y].resize( ui->spWidth->value() );

        for (int x = 0; x < ui->spWidth->value(); x++)
        {
            fieldCells[y][x] = sceneField.addRect(x * sizeCell, y * sizeCell, sizeCell, sizeCell);
        }
    }

    ui->graphView->fitInView( sceneField.sceneRect(), Qt::KeepAspectRatio);

}

void mform::deleteField()
{
    sceneField.clear();
    fieldCells.clear();
    bArrCells.clear();
}


Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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