質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.40%
Qt

QtはGUIプログラムの開発で広く使われているクロスプラットフォーム開発のフレームワークです。

Qt Creator

Qt Creatorは、Qtアプリケーションを開発するための開発統合環境(IDE)です。

Q&A

解決済

1回答

226閲覧

QtでQGraphicsViewに配置したQLabelの文字列の長音記号が消えてしまう

KATA_KAN

総合スコア2

Qt

QtはGUIプログラムの開発で広く使われているクロスプラットフォーム開発のフレームワークです。

Qt Creator

Qt Creatorは、Qtアプリケーションを開発するための開発統合環境(IDE)です。

0グッド

0クリップ

投稿2024/05/07 07:11

はじめまして、KATA_KANと申します。

実現したいこと

Qt を使用して、長音記号付きの文字列(例:Ōsakihirokōji)を書き込んだQLabelをQGraphicsViewに出力し、文字列の回転をさせようとしています。

前提

長音記号付きの文字列をQLabelに書き込み、QGraphicsViewに出力するところまでは上手くいったのですが、出力された文字列の長音記号のうち、"Ō"についた長音記号が外れ"O"になって表示されてしまっていました。小文字の"ō"についた長音記号は残っていました。

発生している問題

画像は上から
・デザイナーのQLabelのプロパティのtextに直接「Ōsakihirokōji」を入力した場合
・プログラムからQLabelのtextに「Ōsakihirokōji」を入力した後、QGraphicsViewに出力した場合
・プログラムからQLabelのtextに「Ōsakihirokōji」を入力し出力した場合
イメージ説明
画像のように、QGraphicsViewに出力した場合に、"Ō"についた長音記号が外れてしまっています。
長音記号をつけたままで、QGraphicsViewに文字列を出力する方法はありますでしょうか?

該当のソースコード

●mainwindow.cpp

#include "mainwindow.h" #include <QtCore/QDebug> #include <QMovie> #include <QGraphicsScene> #include <QGraphicsProxyWidget> #include <QTimer> #include <QScrollBar> #include <string> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); QLabel *label_temp1 = new QLabel(); label_temp1->setText("Ōsakihirokōji"); label_temp1->setFont(QFont("TT-Clarimo UD PE", 30)); QGraphicsScene *scene1 = new QGraphicsScene(this); scene1->addWidget(label_temp1); ui->graphicsView_1->setScene(scene1); ui->label_2->setText("Ōsakihirokōji"); ui->label_2->setFont(QFont("TT-Clarimo UD PE", 30)); } MainWindow::~MainWindow() { }

●mainwindow.h

#ifndef MAINWINDOW_H #define MAINWINDOW_H #include "ui_mainwindow.h" #include <QMainWindow> class MainWindow : public QMainWindow, private Ui::MainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H

※上記以外は、プロジェクトを新規作成したままの状態です。

試したこと

・文字コードの違いがあるかと思い、ソースコード上の"Ōsakihirokōji"を修正するも効果なし
→同じ文字列をQLabelに単純に出力した場合は長音記号ありで出力できていた。

補足情報(FW/ツールのバージョンなど)

開発環境 : Linux(Ubuntu 18.04)
Qt Creator : 4.15.0
Qt : 5.15.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

"Ō"についた長音記号が外れ"O"になって表示されてしまっていました。

画像を見る限り、「長音記号が外れ」ているのではなく、「上部が見切れている」ように見えます。
背景色のグレーが「O」の上部ギリギリにあるところから、そう思いました。

何となくフォントの問題だと思います。(結構、フォント固有のサイズ計算の問題は見かけます)
該当フォントがないので、確認はできませんが。

この回答のやり方ではダメですか。
QGraphicsTextItemであれば、setRotationというメソッドがあるので、回転もできると思うのですが。(やったことはありませんが)

投稿2024/05/07 15:13

katsuko

総合スコア3531

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KATA_KAN

2024/05/08 00:22

katsukoさん、コメントありがとうございます。 >画像を見る限り、「長音記号が外れ」ているのではなく、「上部が見切れている」ように見えます。 >背景色のグレーが「O」の上部ギリギリにあるところから、そう思いました。 ご指摘を受けた通り、サンプルとして添付した表示エリアを拡大したところ、長音記号が表示されました! ●表示エリア拡大前 ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-05-08/1f79a540-34a2-4a67-ac30-6d376ddd3a8e.png) ●表示エリア拡大後(setFixedHeightでサイズ変更) ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-05-08/b8f72fa3-6ab2-4f45-8ddf-fd34a68644f2.png) ただ、追加情報となり恐縮なのですが、文字列に改行を追加して表示した場合、エリアは十分に広いにも関わらず同じように長音記号が表示されないケースが発生してしまいました。 ●表示エリア拡大後(setFixedHeightでサイズ変更、文字列に改行追加) ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-05-08/57fd07f5-f4b7-4243-912f-bbcc7d024ae4.png) >何となくフォントの問題だと思います。(結構、フォント固有のサイズ計算の問題は見かけます) >該当フォントがないので、確認はできませんが。 おっしゃる通り、改行時に消えるという挙動から、フォント側のサイズ計算の問題のような気もします。 一度フォントの提供元に問い合わせをしてみようと思います。情報ありがとうございました。
katsuko

2024/05/08 14:26

Qtはあまり使わないので適切な助言は出せないかもしれませんが…。 回答にもあるQGraphicsTextItemを使う方法ではダメですか。 こちらの方がこのような問題は起きにくそうなのですが。 もしQLabelを使わなければならないのであれば、ダメ元ですが、SceneにQLabelを直接追加するのではなく、QVBoxLayoutなどのレイアウトにaddWidgetし、そのレイアウトをsetLayoutしたQWidgetをScene二追加するということをすると、実はレイアウトが適切なサイズ計算をしてくれて、うまくいく、なんてことがあるかもしれません。いや、ないかなぁ。
KATA_KAN

2024/05/10 08:24

katsukoさん、返信遅れて申し訳ございません。 回答いただいてたQGraphicsTextItemを使用したところ、長音記号が表示されるようになりました! ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-05-10/0fab6bc5-20ce-4d1b-ad4c-f740743fa920.png) 回転もsetRotateを使い期待通りの表示となりましたので、頂いた回答をベストアンサーといたします!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.40%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問