mar3 Temat założony przez niniejszego użytkownika |
[QT]Jak sprawdzić kto wywołał zdarzenie? » 2011-05-03 21:31:18 W swojej aplikacji w menu plik->ostatnio otwarte chcę umieścić listę ostatnio otwartych plików. Będę tę listę pobierał z pliku. Problem w tym, że chciałem do wszystkich elementów ustawić 1 gniazdo. Po kliknięciu w dany element otworzy się odpowiedni plik. Więc w jakiś sposób w tym gniaździe muszę rozpoznać kto wywołał zdarzenie tylko nie wiem jak to zrobić? Czy ktoś ma jakiś pomysł? |
|
DejaVu |
» 2011-05-03 22:24:22 W zasadzie to nie wiem o co chodzi Ci z tym całym 'gniazdem' jak to ująłeś. Nie wiadomo też co rozumiesz przez stwierdzenie 'kto' - sugeruje to osobę, ale chyba nie to miałeś na myśli. |
|
dmx81 |
» 2011-05-04 00:58:30 wyjasnij dokladniej, o co ci chodzi, to pewnie doczekasz sie odpowiedzi szybciej, bo tak, to temat bedzie 'wisial' bez odpowiedzi. Czy program ma tworzyc liste wszystkich otwieranych plikow na komputerze? (tzn otwierasz dokument worda, mp3, obrazek jpg - chcesz, zeby ich nazwy byly zapisywane? Czy raczej pliki otwarte twoim programem maja byc zapamietywane (to na pewno duzo prosciej - bo otwierajac jakikolwiek plik w programie, musisz uzyc jego nazwy - wpisujac lub wybierajac np z listy badz jakiegos kontenera/tablicy nazw). Wtedy wystarczy tylko w tym momencie dopisac biezaca nazwe pliku do swojej listy otwieranych plikow. A jesli chodzi o przypadek pierwszy, wydaje mi sie, ze trzeba uzyc WinAPI, ktorego niestety nie znam, ale wielu innych zna bardzo dobrze, wiec z pewnoscia odpowiedza (mozna tez sprobowac poszukac w necie).
|
|
mar3 Temat założony przez niniejszego użytkownika |
» 2011-05-04 10:29:12 1)DejaVu gniazdo(ang. slot) jest to metoda klasy, która jest wywoływana wtedy, gdy zostanie wyemitowany połączony z tym gniazdem sygnał
2)dmx81 chodzi mi o drugi przypadek. Gdy ktoś otwiera plik w moim programie to ja zapisuje jego ścieżkę do pliku. Podczas uruchamiania mój programu wczytuje te ścieżki plików do jednowymiarowej tablicy. Ścieżki wczytane do tablicy dodaje do menu plik->ostatnio otwarte->. Po kliknięciu danej ścieżki (w menu) chcę żeby otworzył się dany plik. Do każdej ścieżki (w menu) dodałem ten sam SLOT i chciałbym teraz w tym slocie rozpoznać który element menu został wciśnięty (która ścieżka w menu), aby otworzyć odpowiedni plik. |
|
pixelmaster |
» 2011-05-04 12:02:15 Nie dałeś kodu : ( Menu masz pewnie na QMenu. Więc to co wczytujesz z pliku pewnie dodajesz do QMenu jako QAction. Więc możesz użyć sygnału void QMenu::triggered ( QAction * action ) z QMenu i podpiąć go do jakiegoś slotu np. void Window::wybrany_z_menu(QAction * action) i wtedy wyciągasz z action tekst czyli ścieżkę do pliku: QString path = action->text(); |
|
mar3 Temat założony przez niniejszego użytkownika |
» 2011-05-04 13:08:23 Napisałem coś takiego i nie działa. Błąd nie wyskoczył. Aplikacja się uruchomiła, ale klikam w menu i nic się nie dzieje. MainWindow::MainWindow( QWidget * parent ) : QMainWindow( parent ) , ui( new Ui::MainWindow ) { ui->setupUi( this ); QTextCodec::setCodecForTr( QTextCodec::codecForName( "CP-1250" ) ); QAction * op = new QAction( "test", this ); ui->menuNowy->addAction( op ); connect( op, SIGNAL( triggered( QAction * ) ), this, SLOT( selectFile( QAction * ) ) ); }
void MainWindow::selectFile( QAction * action ) { QMessageBox::warning( this, tr( "Uwaga" ), tr( "test." ) ); } |
|
pixelmaster |
» 2011-05-04 13:11:28 Bo triggered to sygnał emitowany przez QMenu a nie QAction : P
connect( ui->menuNowy, SIGNAL( triggered( QAction * ) ), this, SLOT( selectFile( QAction * ) ) );
|
|
mar3 Temat założony przez niniejszego użytkownika |
» 2011-05-04 13:16:19 Wielkie dzięki za pomoc już działa. |
|
« 1 » 2 |