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

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

Страниц: 1 ... 10 11 [12]   Вниз
  Печать  
Автор Тема: Помогите новичку (совсем новичку)  (Прочитано 85081 раз)
Den2009
Гость
« Ответ #165 : Январь 05, 2010, 22:18 »

сразу по-русски делается... я так делал:
Код:
     QTranslator *translator = new QTranslator;
     translator->load("eng.qm", "C:\\Pr1");
     qApp->installTranslator(translator);
работало, но язык не переключался... счас тоже не переключается... английский поставить уже нельзя
Записан
gmorgunov
Гость
« Ответ #166 : Январь 05, 2010, 23:08 »

Я не понял, что вам нужно. Думал хотите вызвать retranslateUI() из main.cpp.
Тогда еще проще:
main.cpp
Код:
...
     MainWindow w ;
     w.triggeredRussian();
А myRetranslateUi() уберите. Проверил, работает.
Записан
Den2009
Гость
« Ответ #167 : Январь 20, 2010, 22:06 »

чтоб не плодить темы, подниму свою ))

вобщем, программа такая:
вводятся длины сторон треугольника, идет проверка на возможность построить треугольник, и если возможно, то в новом окне (QGraphicsView) он рисуется.

вопрос: т.к. начало координат в левом верхнем углу, то треугольник относительно привычных получится вниз головой.. есть ли стандартные функции, чтоб перевернуть изображение на 180?

и еще: кнопка нарисовать изначально отключена (сделал отключенной в дизайнере), она должна включаться, есль условие возможности построения треугольника выполняется, однако не работает.. делаю так:
Код:
    if (((a+b)<=c) or ((b+c)<=a) or ((a+c)<=b) or ((a-b)>c) or ((a-c)>b) or ((b-a)>c) or ((b-c)>a) or ((c-a)>b) or ((c-b)>a))
    {
        textEdit->setText(tr("Невозможно получить треугольник из данных отрезков"));
    }
    else
    {
        textEdit->setText(tr("Из данных отрезков возможно построить треугольник"));
        pushButton_3->isEnabled();
    }
« Последнее редактирование: Январь 20, 2010, 22:21 от Den2009 » Записан
SABROG
Гость
« Ответ #168 : Январь 20, 2010, 22:32 »

В MyImage можно передать родителя (this), потом обращаться к родителю через qobject_cast<MainWindow *>(parent()), создать метод, который будет возвращать твои координаты. Вместо double'ов можно использовать QPolygonF:

Код
C++ (Qt)
QPolygonF polygon;
        polygon << QPointF(x1, y1) << QPointF(x2, y2) << QPointF(x3, y3);
 

Или структуру:

Код
C++ (Qt)
static const QPointF points[3] = {
   QPointF(10.0, 80.0),
   QPointF(20.0, 10.0),
   QPointF(80.0, 30.0)
};
 

А затем использовать метод QPainter::drawPolygon()

Метод QWidget::isEnabled() возвращает true или false, он нужен для проверки состояния кнопки, а не для установки. Тебе нужно использовать метод QWidget::setEnabled(true).

Код
C++ (Qt)
if (((a+b)<=c) or ((b+c)<=a) or ((a+c)<=b) or ((a-b)>c) or ((a-c)>b) or ((b-a)>c) or ((b-c)>a) or ((c-a)>b) or ((c-b)>a))
 

Не припоминаю, чтобы в C++ был оператор "or", может быть "||" ?
« Последнее редактирование: Январь 20, 2010, 22:35 от SABROG » Записан
Den2009
Гость
« Ответ #169 : Январь 20, 2010, 22:44 »

сделал так:
Код:
this->setWindowModality(Qt::NonModal);
    QGraphicsView *view = new QGraphicsView;
    QGraphicsScene *scene = new QGraphicsScene();
    view->setScene(scene);
    QPolygonF polygon;
    polygon << QPointF(ax, ax) << QPointF(bx, by) << QPointF(cx, cy);
    scene->addPolygon(polygon);
    view->show();
все работает, но треугольник отображен перевернутым, т.к. начало координат в верхнем левом, а не как нам привычно в нижнем левом.. есть ли стандартные средства для того, чтоб перевернуть на 180??

и еще: при вводе больших значений, часть треугольника не показывается, появляются scrollbar
задаю минимальные размеры объекта:
Код:
view->setMinimumSize(wi, he);
но, почему-то не работает...
« Последнее редактирование: Январь 20, 2010, 23:03 от Den2009 » Записан
SABROG
Гость
« Ответ #170 : Январь 20, 2010, 23:11 »

сделал так:
Код:
this->setWindowModality(Qt::NonModal);
    QGraphicsView *view = new QGraphicsView;
    QGraphicsScene *scene = new QGraphicsScene();
    view->setScene(scene);
    QPolygonF polygon;
    polygon << QPointF(ax, ax) << QPointF(bx, by) << QPointF(cx, cy);
    scene->addPolygon(polygon);
    view->show();
все работает, но треугольник отображен перевернутым, т.к. начало координат в верхнем левом, а не как нам привычно в нижнем левом.. есть ли стандартные средства для того, чтоб перевернуть на 180??

Так попробуй
Код
C++ (Qt)
QGraphicsPolygonItem *polygonItem = scene->addPolygon(polygon);
polygonItem->setRotation(180.0);
 

и еще: при вводе больших значений, часть треугольника не показывается, появляются scrollbar
задаю минимальные размеры объекта:
Код:
view->setMinimumSize(wi, he);
но, почему-то не работает...
Попробуй этот метод:
void QGraphicsView::fitInView ( const QGraphicsItem * item, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio )

Вместо item подставляй polygonItem. Должен уменьшить треугольник до такой степени, чтобы влезал в виджет.
Записан
Den2009
Гость
« Ответ #171 : Январь 20, 2010, 23:33 »

переворот сделал проще:
Код:
view->rotate(180);

а с размером: у меня ограничение на максимальную длину линии - 500... и при вводе больше 300, виджет уже не показывает треугольник полностью..
поэтому, я подумаю, как можно растянуть виджет, если не получится, то придется сжимать треугольник...
спасибо за помощь
Записан
Страниц: 1 ... 10 11 [12]   Вверх
  Печать  
 
Перейти в:  


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