[解決済み] Qt は仮想ピュアスロットをサポートしていますか?
2022-11-07 07:57:31
質問
私のGUIプロジェクトは
Qt
には多くの設定ページがあり、それらはすべて
QWidget
.
最近、これらのクラスはすべて 2 つのコモンズ・スロットを共有していることに気づきました (
loadSettings()
と
saveSettings()
).
これに関して、2つ質問があります。
-
中間的なベースとなる抽象クラス (仮に
BaseConfigurationPage
と名付けます) を書くことは意味があるのでしょうか?(すべての可能な設定ページ は常に はこれら2つのメソッドを持つので、私は"yes"と言うでしょう) - 私のコードに大きな変更を加える前に(必要であれば)、Qt は仮想ピュアスロットをサポートしていますか?私が注意しなければならないことはありますか。
以下は、すべてを説明するコード例です。
class BaseConfigurationPage : public QWidget
{
// Some constructor and other methods, irrelevant here.
public slots:
virtual void loadSettings() = 0;
virtual void saveSettings() = 0;
};
class GeneralConfigurationPage : public BaseConfigurationPage
{
// Some constructor and other methods, irrelevant here.
public slots:
void loadSettings();
void saveSettings();
};
どのように解決するのですか?
はい、通常の c++ 純粋仮想メソッドと同じです。MOC によって生成されたコードは純粋仮想スロットを呼び出しますが、どのみちベース クラスはインスタンス化できないので大丈夫です...。
繰り返しますが、通常の c++ 純粋仮想メソッドと同様に、メソッドに実装が与えられるまで、クラスはインスタンス化できません。
ひとつだけ、サブクラスでは、オーバーライドされたメソッドをスロットとしてマークする必要はありません。第一に、それらはベースクラスですでにスロットとして実装されています。第二に、MOCとコンパイラの仕事を増やすだけで、(ほんの)少しのコードを追加していることになります。些細なことですが、とにかく。
だから、それのために行く...
関連
-
[解決済み】C++エラー:の初期化に一致するコンストラクタがありません。
-
[解決済み] 既に.objで定義されている-二重包含はない
-
[解決済み】Visual Studio 2013および2015でC++コンパイラーエラーC2280「削除された関数を参照しようとした」が発生する
-
[解決済み】変数やフィールドがvoid宣言されている
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された
-
[解決済み] explicit キーワードの意味は?
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] 仮想デストラクタはいつ使うのか?
-
[解決済み] C++で仮想関数が必要な理由とは?
-
[解決済み】バーチャル/ピュアバーチャルの説明
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++ - 解放されるポインタが割り当てられていないエラー
-
[解決済み】致命的なエラー LNK1169: ゲームプログラミングで1つ以上の多重定義されたシンボルが発見された
-
[解決済み】C++ 式はポインタからオブジェクトへの型を持っている必要があります。
-
[解決済み】関数名の前に期待されるイニシャライザー
-
[解決済み】「corrupted size vs. prev_size」glibc エラーを理解する。
-
[解決済み】「Expected '(' for function-style cast or type construction」エラーの意味とは?
-
[解決済み】CMakeエラー at CMakeLists.txt:30 (project)。CMAKE_C_COMPILER が見つかりませんでした。
-
[解決済み】1つ以上の多重定義されたシンボルが見つかる
-
[解決済み】浮動小数点数の乱数生成
-
[解決済み】'std::cout'への未定義の参照