QtでQTreeWidgetの編集をプログラムで停止するにはどうすればよいですか?

dosvarog

私が持っているQTreeWidgetと2つのボタン「+」と「 - 」。「+」を押すと、QTreeWidgetに新しいアイテムを追加し、そのアイテムを編集モードにします。私は次のコードでそれを行うことができました(「+」が押されるたびに呼び出されます):

// QTreeWidgetItem* lastItem = getLastItem();
// if (lastItem) { widget->closePersistentEditor(lastItem); }

QTreeWidgetItem* item = new QTreeWidgetItem(widget, {"100000"});
item->setFlags(item->flags() | Qt::ItemIsEditable);
widget->addTopLevelItem(item);
widget->editItem(item);

問題は、新しいアイテムを追加しようとしたが、追加する前に編集モードを終了しないことです(Enterキーなどを押してください)。エラーが発生しedit: editing failed、現在のアイテムの下に新しいアイテムが追加されます(まだ編集モードです)。

現在のアイテムは編集モードで存在し、新しく追加されたアイテムはフォーカスされて編集モードになります。

最初にaの最後のアイテムを取得してQTreeWidget呼び出しclosePersistentEditor(lastItem)(コメントコード)してから、新しいアイテムを作成して追加することでそれを実行しようとしましたが、機能しませんでした。では、現在開いているアイテムの編集を閉じるにはどうすればよいですか?

編集:わかりました、最小限の例でコードを追加しました。それを構築するためにあなたがしなければならない唯一のことは、フォームに追加QTreeWidgetQPushButtonて、mainwindow.uiそのボタンをに接続することですon_btnAdd_clicked()

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QTreeWidget>
#include <QTreeWidgetItem>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_btnAdd_clicked()
{
    QTreeWidgetItem* item = new QTreeWidgetItem(ui->treeWidget, {"100000"});
    item->setFlags(item->flags() | Qt::ItemIsEditable);
    ui->treeWidget->addTopLevelItem(item);
    ui->treeWidget->editItem(item);
}

EDIT2:これはQt 5.12のmacOS(Mojave)で発生しています。

dosvarog

わかりました。これはmacOSのQtのバグのようです。私が行った回避策は次のとおりです。

QTreeWidgetItem* lastItem = getLastTreeWidgetItem(widget);
if (lastItem) {
    widget->setDisabled(true);
    widget->setDisabled(false);
}
conversation->setFlags(conversation->flags() | Qt::ItemIsEditable);

getLastTreeWidget()で最後に追加されたアイテムを返す独自のメソッドですQTreeWidgetこれで、ボタンを押して新しいアイテムを追加するたびに、前のアイテムの選択が解除され、新しく追加されたアイテムが編集モードになります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Netlogoのsetup.xmlをプログラムで編集するにはどうすればよいですか?

分類Dev

SwiftUIでTextFieldの境界線の色をプログラムで編集するにはどうすればよいですか?

分類Dev

QTreeWidgetをすべての行を編集可能に設定するにはどうすればよいですか?

分類Dev

Juliaでプログラムの実行を一時停止するにはどうすればよいですか?

分類Dev

Android(Eclispe):プログラムの途中で実行を停止するにはどうすればよいですか?

分類Dev

端末のみを使用してプログラムでファイルを編集するにはどうすればよいですか?

分類Dev

ターミナルのみを使用してプログラムでファイルを編集するにはどうすればよいですか?

分類Dev

ヘッダーとフッターの編集をプログラムで拒否するにはどうすればよいですか?

分類Dev

gnomeアプリケーションリストのプログラムを削除/編集するにはどうすればよいですか?

分類Dev

このプログラムを停止するにはどうすればよいですかPython

分類Dev

Windows 10でPythonプログラムを手動で停止するにはどうすればよいですか?

分類Dev

Cプログラムの出力を編集せずに変更するにはどうすればよいですか?

分類Dev

Cプログラムの出力を編集せずに変更するにはどうすればよいですか?

分類Dev

Qtプログラムをどこからでも終了するにはどうすればよいですか?

分類Dev

AccessibilityServiceをプログラムで開始および停止するにはどうすればよいですか?

分類Dev

UITextFieldに最初にすべてを選択させてから、プログラムで編集させるにはどうすればよいですか?

分類Dev

jqGrid-セル編集モードでセルをプログラムで選択するにはどうすればよいですか?

分類Dev

Java Androidでプログラムを1秒間停止するにはどうすればよいですか?

分類Dev

プログラムでMS-Word文書を開いて編集し、保存するにはどうすればよいですか?

分類Dev

プログラムで編集テキストにアラビア語キーボードを使用させるにはどうすればよいですか?

分類Dev

GTKプログラムを編成するにはどうすればよいですか?

分類Dev

RマークダウンYAMLヘッダーをプログラムで編集するにはどうすればよいですか?

分類Dev

プログラムが停止する理由を見つけるにはどうすればよいですか?

分類Dev

C ++プログラムを停止するにはどうすればよいですか?

分類Dev

DataTablesプラグインに編集ボタンを追加するにはどうすればよいですか?

分類Dev

ループにドラッグアンドドロップで追加されたラベルを編集するにはどうすればよいですか?

分類Dev

プログラムの実行を停止しないポップアップダイアログを作成するにはどうすればよいですか?

分類Dev

Qt Creatorからアプリメニューを編集するにはどうすればよいですか?

分類Dev

プログラムでPixateで特定のCSS値を取得するにはどうすればよいですか?

Related 関連記事

  1. 1

    Netlogoのsetup.xmlをプログラムで編集するにはどうすればよいですか?

  2. 2

    SwiftUIでTextFieldの境界線の色をプログラムで編集するにはどうすればよいですか?

  3. 3

    QTreeWidgetをすべての行を編集可能に設定するにはどうすればよいですか?

  4. 4

    Juliaでプログラムの実行を一時停止するにはどうすればよいですか?

  5. 5

    Android(Eclispe):プログラムの途中で実行を停止するにはどうすればよいですか?

  6. 6

    端末のみを使用してプログラムでファイルを編集するにはどうすればよいですか?

  7. 7

    ターミナルのみを使用してプログラムでファイルを編集するにはどうすればよいですか?

  8. 8

    ヘッダーとフッターの編集をプログラムで拒否するにはどうすればよいですか?

  9. 9

    gnomeアプリケーションリストのプログラムを削除/編集するにはどうすればよいですか?

  10. 10

    このプログラムを停止するにはどうすればよいですかPython

  11. 11

    Windows 10でPythonプログラムを手動で停止するにはどうすればよいですか?

  12. 12

    Cプログラムの出力を編集せずに変更するにはどうすればよいですか?

  13. 13

    Cプログラムの出力を編集せずに変更するにはどうすればよいですか?

  14. 14

    Qtプログラムをどこからでも終了するにはどうすればよいですか?

  15. 15

    AccessibilityServiceをプログラムで開始および停止するにはどうすればよいですか?

  16. 16

    UITextFieldに最初にすべてを選択させてから、プログラムで編集させるにはどうすればよいですか?

  17. 17

    jqGrid-セル編集モードでセルをプログラムで選択するにはどうすればよいですか?

  18. 18

    Java Androidでプログラムを1秒間停止するにはどうすればよいですか?

  19. 19

    プログラムでMS-Word文書を開いて編集し、保存するにはどうすればよいですか?

  20. 20

    プログラムで編集テキストにアラビア語キーボードを使用させるにはどうすればよいですか?

  21. 21

    GTKプログラムを編成するにはどうすればよいですか?

  22. 22

    RマークダウンYAMLヘッダーをプログラムで編集するにはどうすればよいですか?

  23. 23

    プログラムが停止する理由を見つけるにはどうすればよいですか?

  24. 24

    C ++プログラムを停止するにはどうすればよいですか?

  25. 25

    DataTablesプラグインに編集ボタンを追加するにはどうすればよいですか?

  26. 26

    ループにドラッグアンドドロップで追加されたラベルを編集するにはどうすればよいですか?

  27. 27

    プログラムの実行を停止しないポップアップダイアログを作成するにはどうすればよいですか?

  28. 28

    Qt Creatorからアプリメニューを編集するにはどうすればよいですか?

  29. 29

    プログラムでPixateで特定のCSS値を取得するにはどうすればよいですか?

ホットタグ

アーカイブ