2

私はqtで作業しており、「開く」、「保存」、「名前を付けて保存」、「閉じる」、「終了」というサブメニュー項目を持つ「ファイル」のようなメニューバーを作成しました。「actionNew」、「actionOpen」などのアクションも作成しました。ツールバーに同じアクションを使用し、「disableItems()」関数を使用してメニューとツールバーの項目をコンストラクターで無効にしました。これは正常に機能し、ツールバーとメニュー項目はグレー表示されます。サブメニュー項目「新規」をクリックすると、ツールバーとメニュー項目が有効になり、グレー表示されず、それも正常に機能しますが、サブメニュー項目「閉じる」をクリックすると、ツールバー項目のみがグレー表示され、メニューアイテムがまだ有効になっています:(.どうすれば修正できますか?助けていただければ幸いです。私の下手な英語で申し訳ありません;)

MainWindow::MainWindow(QWidget *parent)
:QMainWindow(parent), ui(new Ui::MainWindow)
{
  ui->setupUi(this);
  /* disable menu items and tool bar items */
  disableItems();
}
void MainWindow::disableItems()
{
  ui->actionSave->setEnabled(false);
  ui->actionSaveAs->setEnabled(false);
  ui->actionClose->setEnabled(false);
}
void MainWindow::enableItems()
{
  ui->actionSave->setEnabled(true);
  ui->actionSaveAs->setEnabled(true);
  ui->actionClose->setEnabled(true);
}
void MainWindow::on_actionNew_triggered()
{
  enableItems();
}
void MainWindow::on_actionClose_triggered()
{
  disableItems();
}
4

1 に答える 1

0

私も同じ問題を抱えていました。

コードの動作が Linux 64 (通常は開発する場所)、Windows (顧客マシン)、Linux 32 (古い開発およびバックアップ マシン) とは異なるため、戸惑いました。すると、バージョンの違いに気づきました。

私が見つけた唯一の解決方法は、私のUbuntuディストリビューションに付属しているデフォルトのQtSDKから、ここからダウンロードした最新のものにアップグレードすることでした。

使用しているバージョンがアップグレードできるかどうかを確認することをお勧めします。

HTH

編集私は、彼らが何かより根本的な変更をしたことに気付きました.アップグレード後、メニューバーは「トップ画面」では共有されなくなりましたが、「メインウィンドウ」内でより伝統的に共有されました. おそらくチームは移植性の問題を見落としていたのでしょう。

于 2012-10-07T14:56:01.197 に答える