Контекстное меню вкладки QTabWidget

Хорошо, самая простая форма того, что Вы ищете, является командой канала. Это позволяет Вам выполнять несколько команд cmdline на той же строке. В Вашем случае две команды являются записью 'w' и выполняют текущий файл'! %: p'. Если у Вас есть определенная команда, Вы выполняете для Вас текущий файл, вторая команда становится, например,'! % Python: p'. Так, самый простой ответ Вам вопрос становится:

:w | ! %:p
 ^ ^ ^
 | | |--Execute current file
 | |--Chain two commands
 |--Save current file

Одна последняя вещь отметить состоит в том, что не все команды могут быть объединены в цепочку. Согласно документы Vim , определенные команды принимают канал как аргумент и таким образом повреждают цепочку...

7
задан Daniel Hedberg 20 February 2013 в 21:43
поделиться

2 ответа

Простой способ, но, возможно, не совсем то, что вам нужно:

  1. Подключитесь к сигналу 'currentChanged' вашего QTabWidget
  2. В слоте, который подключен к сигналу, создайте QMenu и заполните его по мере необходимости
  3. Наконец, в слоте, который подключен к сигналу, вызовите QMenu :: exec (QCursor :: pos ())

Это приведет к вызову функции всякий раз, когда вкладка изменяется (не обязательно нажал) и spawn a menu at the current mouse position.

Complicated way, which exactly does what you describe:

  1. Call QObject::installEventFilter on your QTabWidget, so that all the events on your QTabWidget are redirected to your own object.
  2. In your own object, reimplement QObject::customEvent and handle all QMouseEvent events.
  3. Populate a QMenu as needed and call QMenu::exec at the position of the QMouseEvent you're handling.
5
ответ дан 7 December 2019 в 07:47
поделиться

I think you need to create your own class that inherits from QTabWidget and override the MousePressEvent(QMouseEvent) protected function in which you can create your context menu on right click.

0
ответ дан 7 December 2019 в 07:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: