Qtで作ってみた・・アナログ時計 其の3 数文字の表示(QGraphicsView編)
こんにちは。川上です。
アナログ時計の背景画に、1.2.3・・・の数文字の表示です。
ーー mainwindow.cpp ーー
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | void MainWindow::drawClockBoardMoji(int hankei) { double pi = 3.14; int lblwh= 20; QSize sz = ui->graphicsView->frameSize(); QPointF bs_center = QPointF(sz.width() / 2 - (lblwh+lblwh/2) , sz.height()/2 - (lblwh+lblwh/2)); for (int ps=1;ps<=12;ps++) { QLabel* label = new QLabel(QString::number(ps)); label->setStyleSheet("background:white; color:green;"); label->setAlignment(Qt::AlignCenter); //=== 数文字の表示位置の角度の取得 double qq = pi / double(180) * double(getKakuDo(ps) - 90 ); double x = double(hankei) * cos(qq); double y = double(hankei) * sin(qq); float lbl_x = float(bs_center.rx()) + float(x); float lbl_y = float(bs_center.ry()) + float(y); label->setGeometry(lbl_x,lbl_y, lblwh, lblwh); Scene_.addWidget(label); } } |
1 2 3 4 5 6 | float MainWindow::getKakuDo(int idx) { int CIRCLE_RADIUS = 360; float angleUnit = CIRCLE_RADIUS / 12; return float(idx) * angleUnit; } |
drawClockBoardMoji()をdrawClockView_base()に組み込みました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | void MainWindow::drawClockView_base() { QSize sz = ui->graphicsView->frameSize(); // -- Imageの縦横サイズ int bsWorH = (sz.width() > sz.height() ? sz.height() : sz.width() - 40); //---graphicsViewにScene_を設定。 ui->graphicsView->setScene(&Scene_); // --- 時計版文字位置用の半径Size int hankei = bsWorH / 2 - 20; // MARK: -- 時計盤の数文字表示 drawClockBoardMoji( hankei); ・・・・ } |
でした。。。
ではでは。