QComboBoxを書き直し、カスタムQFontComboBoxを実装し、カスタムフォントを追加し、フォントスタイルを表示します

開発プロセス中に、フォント選択ボックスを追加する必要があります。これは簡単です。QFontComboBoxを直接使用して解決できます。ただし、フォントはシステムフォントを使用せず、カスタムフォントライブラリを使用する必要があります。後でI QComboBoxを使用して解決しようとしましたが、このゴーストなものは1つのアイテムのフォントスタイルを単独で変更することはできません。忘れて、自分で書いてください。


class CFontComboBox : public QComboBox {
    Q_OBJECT
private:
    QListWidget * mFontList;
public:
    CFontComboBox(QWidget * parent = nullptr);
    void addFont(QString famil);
    void addFonts(QStringList famils);
protected:
    void wheelEvent(QWheelEvent ) override;
};

.cpp文件

CFontComboBox::CFontComboBox(QWidgetparent) :
    QComboBox(parent)
{
    mFontList = new QListWidget(this);
    setModel(mFontList->model());
    setView(mFontList);
    mFontList->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
    setStyleSheet("QComboBox{combobox-popup:0;}");
    setMaxVisibleItems(5);
}
void CFontComboBox::wheelEvent(QWheelEvent * event) {
}
void CFontComboBox::addFont(QString famil) {
    auto item = new QListWidgetItem(famil);
    QFont font;
    font.setFamily(famil);
    item->setFont(font);
    QIcon icon(":icons/T.png");
    item->setIcon(icon);
    mFontList->addItem(item);
}
void CFontComboBox::addFonts(QStringList famils) {
    for (auto famil : famils)
    {
        addFont(famil);
    }
}

言うまでもなく、上の画像は完了です。
font.pngを選択してください

カスタムのものには前面にアイコンがありません。これは私がUIにデザインを依頼したものです。必要に応じて使用できます。言うまでもありません。上の画像:
Icon.png

誰かが理解できないのを防ぐために、説明させてください。理解できたらスキップしてください
。setView()がビューに置き換わり、ビューを操作します。

setStyleSheet(“QComboBox{combobox-popup:0;}”);
setMaxVisibleItems(5);

この3つは、表示バーとスクロールバーの最大数を設定する
ためのもので、wheelEventメソッドを書き換えることはできません。ユーザーにマウスでフォントを変更させたくない、書き換えることはできません。
最終的なAddFontとaddFontsは行いません。説明する必要がある場合は、これら2つの方法を使用してフォントを追加して
ください私の例が役立つと思われる場合は、注意を払うことを忘れないでください
今後、Qtのスキルと方法を頻繁に更新します

おすすめ

転載: blog.csdn.net/weixin_41191739/article/details/111564654