16,816
社区成员




main.cpp
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));
//QTranslator translator;
//translator.load("linelossdialog_zh.qm");
//app.installTranslator(&translator);
LineLossDialog dialog;
dialog.show();
return app.exec();
}
LineLossDialog.cpp
LineLossDialog::LineLossDialog(QWidget *parent) : QDialog(parent)
{
setFixedSize(600, 400);
QString str("台区线损率");
setWindowTitle(str);
QPushButton *pointerPB = new QPushButton(QIcon(":/pointer.png"), "中文", this);
pointerPB->setGeometry(0, 0, 112, 28);
m_ChartViewer = new QChartViewer(this);
m_ChartViewer->setGeometry(2, 28, 600, 300);
drawChart(m_ChartViewer);
}
void LineLossDialog::drawChart(QChartViewer *viewer)
{
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setHostName("aa");
db.setDatabaseName("dd");
db.setUserName("dd");
db.setPassword("cc");
db.setPort(1521);
if(!db.open())
return ;
QSqlQuery query(db);
query.exec("select Rate from AMI_TransAreaLineLoss where areaID=1 and Day>=to_date('2010-01-01','yyyy-MM-dd') and Day<to_date('2010-02-01','yyyy-MM-dd') order by day asc");
double y[31];
int count = 0;
while(query.next())
{
y[count] = query.value(0).toDouble() * 100;
count++;
}
double data1Start = Chart::chartTime(2010, 1, 1);
double data1End = Chart::chartTime(2010, 1, 31);
XYChart *c = new XYChart(600, 400);
c->setDefaultFonts("simsun.ttc", "simsun.ttc", "simsun.ttc", "simsun.ttc");
c->setBackground(c->linearGradientColor(0, 0, 0, 100, 0x99ccff, 0xffffff),
0x888888);
c->setRoundedFrame();
c->setDropShadow();
c->addTitle("台区线损率曲线", "simsun.ttc", 18)->setMargin(0, 0, 16, 0);
PlotArea *plotArea = c->setPlotArea(60, 60, 500, 240, -1, -1, Chart::Transparent,
c->dashLineColor(0x444444, 0x000101), -1);
LegendBox *legendBox = c->addLegend(plotArea->getLeftX() + plotArea->getWidth() /
2, 45, false, "simsun.ttc", 10);
legendBox->setAlignment(Chart::TopCenter);
legendBox->setBackground(Chart::Transparent, Chart::Transparent);
c->yAxis()->setTickDensity(30);
c->xAxis()->setTickDensity(75);
c->xAxis()->setColors(Chart::Transparent);
c->yAxis()->setColors(Chart::Transparent);
c->xAxis()->setMargin(15, 15);
c->xAxis()->setLabelStyle("simsun.ttc", 8);
c->yAxis()->setLabelStyle("simsun.ttc", 8);
c->yAxis()->setTitle("中文", "simsun.ttc", 10);
LineLayer *layer0 = c->addLineLayer();
layer0->addDataSet(DoubleArray(y, sizeof(y)/sizeof(y[0])),
0xff0000, tr("ChartLegend1").toUtf8().constData())->setDataSymbol(Chart::ChartDir_CustomSymbol, 11);
layer0->setXData(data1Start, data1End);
layer0->setLineWidth(3);
delete viewer->getChart();
viewer->setChart(c);
updateImageMap(viewer);
}
c->addTitle("台区线损率曲线", "simsun.ttc", 18)->setMargin(0, 0, 16, 0);
改为:c->addTitle(QTextCodec::codecForName("UTF-8")->fromUnicode("线损率曲线").constData(), "simsun.ttc", 18)->setMargin(0, 0, 16, 0);
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));