• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przekazywanie argumentu z command-line do funkcji

VPS Starter Arubacloud
0 głosów
301 wizyt
pytanie zadane 16 listopada 2017 w C i C++ przez Eliro Stary wyjadacz (12,160 p.)
main.cpp
#include "notepadwindow.h"
#include <QApplication>
#include <QCoreApplication>

int main(int argc, char *argv[])
{

    QApplication a(argc, argv);
    NotepadWindow w;
    if(argc == 2)
    {
        w.openfile(QCoreApplication::arguments().at(1));
    }

    w.show();
    return a.exec();

}

 

 

Notepadwindow.cpp

void NotepadWindow::openfile(QString textfile)
{
    QFile file(textfile);
    QTextStream in(&file);
    in.setCodec("UTF-8"); // Ustaw kodowania znaków na UTF-8
    QString text = in.readAll();
    ui->textEdit->setPlainText(text);
}

 

Otwieram więc plik za pomocą swojego notatnika (przesuwam ikone pliku tekstowego na ikonę mojego programu) i notatnik się otwiera i nic się nie dzieje. Jakieś pomysły?

1 odpowiedź

+1 głos
odpowiedź 16 listopada 2017 przez obl Maniak (51,280 p.)
wybrane 19 listopada 2017 przez Eliro
 
Najlepsza

A gdzie tu zrobiłeś otwarcie pliku?

file.open(QIODevice::WriteOnly | QIODevice::Text);

 

komentarz 16 listopada 2017 przez Eliro Stary wyjadacz (12,160 p.)

Efekt ten sam, puste pole tekstowe się otwiera

 

void NotepadWindow::openfile(QString textfile)
{
    QFile file(textfile);
    file.open(QIODevice::WriteOnly | QIODevice::Text);
    QTextStream in(&file);
    in.setCodec("UTF-8"); // Ustaw kodowania znaków na UTF-8
    QString text = in.readAll();
    ui->textEdit->setPlainText(text);
    file.close();
}

 

komentarz 17 listopada 2017 przez obl Maniak (51,280 p.)
edycja 17 listopada 2017 przez obl

to sprawdź, czy się otworzyło:

if(file.open(QIODevice::WriteOnly | QIODevice::Text)){
    // tutaj czytasz plik
}else{
    qDebug() << "się nie otwiera plik"; // to wyświetli ci w konsoli Qt Creatora jeżeli plik się nie otworzy
}

Jeżeli się nie otwiera, to znaczy, że z ścieżką do pliku jest coś nie tak.

komentarz 17 listopada 2017 przez Eliro Stary wyjadacz (12,160 p.)
Zmieniłem na "WriteOnly" na  ReadOnly i zaczęło działać poprzez cmd->MyNotepad.exe text.txt

Jednak wciąż problem jest, gdy chcę otworzyć plik tekstowy "otwórz za pomocą", bo program wtedy nie otwiera się.
komentarz 17 listopada 2017 przez obl Maniak (51,280 p.)
Mój błąd z tym WriteOnly, powinno być oczywiście ReadOnly.

Na jakim systemie to robisz? Co się dzieje, program w ogóle się nie uruchamia, czy wyświetla się jakiś komunikat błędu? Pod windowsem aby program Qt działał musisz skopiować biblioteki dll do jego folderu.
komentarz 18 listopada 2017 przez Eliro Stary wyjadacz (12,160 p.)
Mam w folderze potrzebne pliki .dll, program się uruchamia. Nie mogę jednak otworzyć pliku tekstowego za pomocą swojego programu. Chciałbym to robić klikając na plik tekstowy i klikać "otwórz za pomocą" i wybrać sobie mój program jako domyślny, który uruchamiałby pliki tekstowe. Mogę wysłać Ci na PW cały projekt, jeśli to pomoże. Gdy próbuję uruchomić plik tekstowy wybierając "otwórz za pomocą", to nic się nie dzieje.
komentarz 18 listopada 2017 przez obl Maniak (51,280 p.)

Już wiem o co chodzi, zmień nazwę programu z notepad.exe np na notepad2.exe bo jeżeli masz notepad to on otwiera automatycznie w systemowym notepadz-ie zmieniłem mu nazwę kliknąłem na pliku tekstowym ppm wybrałem z menu otwórz za pomocą -> wybierz program domyślny i wskazałem mu twój program i w końcu się uruchomił i otworzył ten plik.

Innymi słowy kod jest w porządku ale nazwa programu kolidowała z istniejącym domyślnym notatnikiem systemowym:)

Podobne pytania

0 głosów
0 odpowiedzi 107 wizyt
pytanie zadane 22 grudnia 2018 w C i C++ przez MS Początkujący (430 p.)
0 głosów
1 odpowiedź 433 wizyt
pytanie zadane 13 października 2018 w Systemy operacyjne, programy przez miro Pasjonat (23,870 p.)
0 głosów
2 odpowiedzi 1,725 wizyt
pytanie zadane 2 grudnia 2016 w C i C++ przez Riddick Bywalec (2,600 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...