Każdy z nas na co dzień korzysta z różnych programów i otwiera różne pliki klikając dwukrotnie na ikonkę, ale jak to jest zrobione i jak to zrobić, aby takie coś działało w utworzonym własnoręcznie programie? Odpowiedź jest dość prosta, albowiem w pliku main.cpp znajduje się funkcja, która jest wywoływana przez system i ta funkcja przyjmuje dwa argumenty:
intargc - określa liczbę elementów tablicy ciągu znaków podanej jako kolejny argument;
char*argv[] - zawiera parametry, z jakimi program został uruchomiony (w formie tablicy ciągów znaków)
int main(int argc, char *argv[])
{
for(int i = 0; i < argc; i++){
qDebug() << argv[i]; // to zostanie wyświetlone w konsoli Qt Creatora
}
W konsoli Qt Creator-a zostanie wyświetlone coś w stylu: "C:\...\build-myFirstGUI-Desktop_Qt_5_6_3_MinGW_32bit-Debug\debug\myFirstGUI.exe, czyli pierwszym i jedynym domyślnie elementem tablicy argv jest ścieżka do uruchomionego programu, następne elementy to parametry uruchomieniowe programu. Ja zakładam, że parametrami tymi będzie ścieżka do otwieranego pliku tekstowego.
W związku z powyższym konieczne jest zmodyfikowanie konstruktora klasy MainWindow tak, aby ten przyjmował jako argumenty wyżej wymienione parametry funkcji main:
explicit MainWindow(int argc, char *argv[], QWidget *parent = 0);</strong>
<p>W pliku <strong>mainwindow.cpp</strong> w konstruktorze klasy <strong class="Qt Cpp val_type">MainWindow</strong> konieczne jest obsłużenie wczytywania pliku z wykorzystaniem parametrów funkcji <strong class="Qt Cpp function">main</strong>:</p>
<code>if(argc > 1){
openFile(argv[1]);
}
i jednocześnie zmienić kod sygnału on_actionOpen_triggered:
void MainWindow::on_actionOpen_triggered()
{
QString filePath = QFileDialog::getOpenFileName(
this, // wskaźnik na rodzica (może być 0, gdy rodzica nie ma)
"Open text file", // Text belki tytułowej okna dialogowego
QDir::homePath(), // ścieżka startowa
"All txt files (*.txt *.ftf);;Txt files (*.txt);;Formatted tekxt file (*.ftf)" // filtr plików
);
openFile(filePath);
}
Po wprowadzeniu powyższych zmian wystarczy w systemie wskazać jako program uruchomieniowy swój wypasiony edytor tekstu aby program otwierany plik został wyświetlony w twoim programie.