2012-09-18 126 views
0

有沒有辦法做到這一點?我試圖創建一個標籤來對應我使用QwtPlotMarker創建的標記。我的目的是顯示包含的標籤我的點擊,m_xPos和m_yPos座標,在下面的例子中包含的代碼,我到目前爲止有:將std :: string轉換爲QwtText

QwtPlotMarker *testMarker = new QwtPlotMarker(); 
testMarker->setLineStyle(QwtPlotMarker::HLine); 
testMarker->setLabelAlignment(Qt::AlignRight | Qt::AlignBottom); 
testMarker->setLinePen(QPen(QColor(200,150,0), 0, Qt::DashDotLine)); 
testMarker->setSymbol(QwtSymbol(QwtSymbol::Diamond, QColor(Qt::yellow), QColor(Qt::green), QSize(7,7))); 
testMarker->setXValue(m_xPos); 
testMarker->setYValue(m_yPos); 
testMarker->show(); 
testMarker->attach(d_graph->plotWidget()); 
testMarker->setLabel(....) 

m_xPos和m_yPos是的std :: string

回答

1

展望在QwtText的文檔中,有一個構造函數接受QString。這是Qt的QString?如果是的話,你可以將它轉換是這樣的:

wstring xPos2(m_xPos.begin(), m_xPos.end()); 
testMarker->setXValue(QString(xPos2.data(), xPos2.length())); 

wstring yPos2(m_yPos.begin(), m_yPos.end()); 
testMarker->setYValue(QString(m_yPos.data(), m_yPos.length())); 

注意,這只是具有wstring的構造函數只是每個字符分配到wchar_t的轉換字節Unicode字符。實際上,使用Windows的MultiByteToWideString之類的東西,實際上可以執行編碼轉換。

+0

感謝您的回覆。但是,我已經給出的代碼已經設置了標記的位置。我想要做的是使用QwtPlotMarker的setLabel()創建相應的標籤,然後我想要標籤顯示標記所在的座標。 – programmingNoob

0
QwtPlotMarker *testMarker = new QwtPlotMarker(); 
testMarker->setLineStyle(QwtPlotMarker::HLine); 
testMarker->setLabelAlignment(Qt::AlignRight | Qt::AlignBottom); 
testMarker->setLinePen(QPen(QColor(200,150,0), 0, Qt::DashDotLine)); 
testMarker->setSymbol(QwtSymbol(QwtSymbol::Diamond, QColor(Qt::yellow), QColor(Qt::green), QSize(7,7))); 
testMarker->setXValue(m_xPos); 
testMarker->setYValue(m_yPos); 
testMarker->show(); 
testMarker->attach(d_graph->plotWidget()); 

QwtText markerLabel = QString::fromStdString(+ m_xPos + ", " + m_yPos +); 
testMarker->setLabel(markerLabel); 

是我需要做的。我已經知道了,謝謝。我沒有看到帶QString的構造函數;我用它來連接字符串,轉換爲QString,然後我可以在一個圖上顯示它。

0

QwtText對象可以用QString對象構造,它可以用C字符串構造。因此,以下應該工作:

std::string my_string("Hello, World!"); 
QwtText markerLabel(my_string.c_str());