🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

2 total messages Started by Borneq Sun, 30 Dec 2018 21:45
Qt, Control+Tab
#309783
Author: Borneq
Date: Sun, 30 Dec 2018 21:45
41 lines
2042 bytes
Chciałem zmienić działanie Control+Tab, aby można było przechodzić 
szybko do ostatnio wybranej zakładki.
Poprzez wstawianie jej na początek:
https://forum.qt.io/topic/98081/how-programically-order-tabs-in-qtabwidget

Mam
void TabWindow::keyReleaseEvent(QKeyEvent *event)
{
     if (event->key()==Qt::Key_Control)
     {
         std::cout <<  "release" << std::endl;
         CodeEditor *current = qobject_cast<CodeEditor 
*>(tabWidget->currentWidget());
         tabWidget->removeTab(tabWidget->currentIndex());
         tabWidget->insertTab(0, current, current->name);
         tabWidget->setCurrentWidget(current);
     }
}

Ale chyba źle, bo jest

void QLayout::removeWidget(QWidget *widget)
{
     int i = 0;
     QLayoutItem *child;
     while ((child = itemAt(i))) {
         if (child->widget() == widget) {
             delete takeAt(i);
             invalidate();
         } else {
             ++i;
         }
     }
}

zwalnia wskaźnik przy RemoveTab, choć u mnie wersja Debug działa i nie 
wykrzacza się, to widać że tak nie robić.
ALE
W Qt creatorze jest to rozwiązane: dla Control+Tab pokazuje się lista i 
najnowsze brane są na początek.
Tylko jako to oprogramować ?
Re: Qt, Control+Tab
#309784
Author: szykcech
Date: Mon, 31 Dec 2018 05:39
9 lines
1831 bytes
> Tylko jako to oprogramować ?

QObject::installEventFilter(QObject*) (czy jakoś tak) twoim przyjacielem jest.
Wtedy:
1. W konstruktorze TabWindow:
ui->tabWidget->installEventFilter(this);
2. W TabWindow dodajesz funkcję eventFilter(QObject*, QEvent*) (czy jakoś tak)
3. W eventFilter(QObject*, QEvent* aEvent) rzutujesz aEvent do QKeyPressEvent (czy jakoś tak)
4. Jak się poprawnie zrzutuje sprawdzasz czy jest to przycisk Qt::key_Tab (czy jakoś tak) i czy ma modifer() == Qt::Control (czy jakoś tak)
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads