Здравствуйте, гость ( Вход | Регистрация )
Litkevich Yuriy | Дата 25.11.2009, 17:53 |
в PointSelection модусе что такое "модус", "модуль"? |
|
Vitali83 | Дата 25.11.2009, 17:37 |
здесь много знатоков Qwt честно говоря сомнительно, то что многие использовали Qwt, сомнений нет, а вот насколько основательно это уже вопрос.с проблемой движения объектов решенно и тепер я могу их двигать. Проблема состояла в том, что надо было трансформиробать координаты в координаты плота, только тогда можно было выяснить, находиться ли объект под мышкой или нет. тепер другая проблема: я хотел бы исползовать QwtPlotPicker одновременно в модусах PointSelection и RectSelection, но не знаю как тогда параметры поставить. В данный момент я либо могу работать в PointSelection модусе, либо в RectSelection. Не подскажите как ето реализовать? Раскрывающийся текст void Plot::cursorSelected(const QwtDoublePoint &Point) { //selectedPoint = NULL; std::cout << "in Plot::cursorSelected, selectedPoint = " << selectedPoint << std::endl; const QwtPlotItemList& List = itemList(); // get all items from the plot... QwtPlotItemIterator Iter = List.begin(); while(Iter != List.end()) // ... and iterate through them... { if((*Iter)->rtti() == QwtPlotItem::Rtti_PlotMarker){ // ... until you find the item from class QwtPLotMarker QwtPlotMarker *mark = ((QwtPlotMarker*)(*Iter)); double x = this->transform(mark->xAxis(),mark->xValue()); // transform the item's coordinates to plot's coordinates double y = this->transform(mark->yAxis(),mark->yValue()); std::cout << "mark.xValue()=" << mark->xValue() << ", mark.yValue()=" << mark->yValue()<< std::endl; std::cout << "transformed mark coord = " << x << ", " << y<< std::endl; QwtDoublePoint trPoint = QwtDoublePoint(x,y); // create a point consisting of transformed coordinates double xClick = this->transform(mark->xAxis(),Point.x()); // transform the mouse click's coordinates to plot's coordinates double yClick = this->transform(mark->yAxis(),Point.y()); QwtDoubleRect recOfClick(xClick-10, yClick-10, 20,20); // generate a rectangle around the click's position std::cout << "recOfClick(x,y,width, height) =" <<recOfClick.x()<<", " << recOfClick.y() << ", " << recOfClick.width()<< ", "<<recOfClick.height()<< std::endl; if(recOfClick.contains(trPoint)){ // if click's rectangle includes the QwtPlotMarker, then... std::cout << "MATCH" << std::endl; selectedPoint = mark; // ... save the pointer to this item into variable "selectedPoint" std::cout << "selectedPoint = " << selectedPoint << std::endl; const QwtSymbol symbol = selectedPoint->symbol(); QwtSymbol newSymbol = symbol; newSymbol.setBrush(symbol.brush().color().dark(150)); // highlighten the selected item by darken its color selectedPoint->setSymbol(newSymbol); /* replot(); selectedPoint->setSymbol(symbol);*/ } /* else{ selectedPoint = NULL; // at the beginning this pointer should be NULL }*/ } Iter++; } } ... void Plot::cursorMoved( const QwtDoublePoint& Point){ std::cout << "in Plot::cursorMoved, selectedPoint = " << selectedPoint << std::endl; std::cout << "Point.x()= " << Point.x() <<"Point.y()= " << Point.y() << std::endl; if(selectedPoint!=NULL){ selectedPoint->setValue(Point); // set the new coordinates to the moved item //std::cout << "selectedPoint->xValue(): " << selectedPoint->xValue() <<"selectedPoint->yValue(): " << selectedPoint->yValue()<< std::endl; this->replot(); // replot the plot widget after the selected point was moved } } |
|
Litkevich Yuriy | Дата 25.11.2009, 11:04 |
здесь много знатоков Qwt честно говоря сомнительно, то что многие использовали Qwt, сомнений нет, а вот насколько основательно это уже вопрос. |
|
Vitali83 | Дата 25.11.2009, 10:49 |
здравствуйте, я надеюсь здесь много знатоков Qwt, которые мне могли бы помочь решит следушею проблему: Я уже всю неделю стараюсь сделать QwtPlotMarker двигаюшимся, что значит если я мышкой нажимаю на QwtPlotMarker и тяну его по плоту, то етот объект должен преследовать мышь и отобразоваться в том месте где я отпушю мышь. К сожалению, я до сих пор не смог ето реализовать. Помогите пожалуйста. Детали: 1) я исползую QwtPlot, на который я нанес несколько 2) QwtPlotMarker. Дополнительно я исползую QwtPlotPicker которым я как раз хочу выделять объекты и двигать их. мой код:
|
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 19.4.2024, 18:27 |