Делаю график в Qt.Нужно подписать координатные оси. Делаю это в цикле c помощью QGraphicsTextItem
, так как обычное QGraphicsScene->addText ()
не позволяет задать координаты надписей.
Нашел в Интернете пример объявления такого QGraphicsTextItem
:
QGraphicsTextItem *textItem = new QGraphicsTextItem("I'm text.", 0, 0);
textItem->setPos(67, 90);
scene->addItem(textItem);
Но мне нужно передать в QGraphicsTextItem
не просто строку в кавычках, а значение QString str
. И вот тут-то мне и выдает ошибку
no matching function for call to 'QGraphicsTextItem::QGraphicsTextItem(QString*&, int, int)'
Пробовал передавать так:
OXText = new QGraphicsTextItem (str, 0,0);
Я так понимаю, что такого вызова нет в конструкторе QGraphicsTextItem
, поэтому компилятор и ругается, но может есть способ для того, чтобы передать в QGraphicsTextItem
готовую надпись из str
?
Полный фрагмент кода.
В заголовочном файле
double xmin;
double dx;
double xmax;
QGraphicsTextItem *OXText;
В файле .cpp
xmin = 0.0;
xmax = 2.0;
dx = 0.05;
QString *str =new QString;
for (int i =1; i<10;i++){
double OX = (xmin + i*dx)/10;
str->number(OX);
OXText = new QGraphicsTextItem (str, 0,0);
OXText->setPos(100*i,100*i);
graphicsScene->addItem(OXText);
}
Обновление: сделал из QString * str
просто QString str
. Ошибок не выдает, но и надпись почему-то не выводит.
Мой обновленный код
xmin = 0.0;
xmax = 2.0;
dx = 0.05;
QString str ="";
for (int i =1; i<10;i++){
double OX = (xmin + i*dx)/10;
str.number(OX);
OXText = new QGraphicsTextItem (str, 0,0);
OXText->setPos(50*i,graphicsScene->height()-50);
graphicsScene->addItem(OXText);
Нашел решение. Вместо str.number (OX);
Нужно написать str.setNum(OX)
В итоге код подписи оси:
xmin = 0.0;
xmax = 2.0;
dx = 0.05;
for (int i =1; i<10;i++){
double OX = (xmin + i*dx)/10;
QString str;
str.setNum(OX);
OXText = new QGraphicsTextItem (str, 0,0);
OXText->setPos(50*i,graphicsScene->height()-50);
graphicsScene->addItem(OXText);
}
Еще одно решение, спасибо @BeardedBeaver за решение в одну строку кода в цикле
xmin = 0.0-dx;
xmax = 2.0;
dx = 0.5;
for (int i =1; i<10;i++){
graphicsScene->addText(QString::number((xmin + i*dx)/10))->setPos(...);
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
В моем приложении у меня есть LineEdit и мне нужно при вводе, к примеру - "Собака" на определенном сайте выводился результат поискаПодскажите пожалуйста...
Переписал на си функцию glm::rotate, теперь хочу сделать так, чтобы можно было повернуть изображение относительно другой координаты, а не координаты...
Делаю график на QtНужно подписать координатную ось ОY