QDialog niekoniecznie,zależy czego autor oczekuje od działania swojej aplikacji:
1.Jeżeli wykres ma tkwić i blokować inną funkcjonalność aplikacji póki się go nie zamknie,to faktycznie QDialog (modalny) będzie niezły
2.Ale jeśli ma się tylko otworzyć nowe okno "do popatrzenia" na ów wykres,i takich okien z wykresami może istnieć wiele wóczas lepiej oprzeć się o klasę QMainWindow.
Co main windowa,to zakładam,iż sobie ten wykres namalujesz używając QPaintera na jakimś swoim QWidgecie.Zatem stworzenie nowego okna po klinięciu uzyskasz w krokach:
-Zdefiniuj sobie nową klasę pochodną od QMainWindow,która jako składnik zawierać będzie widgeta służącego do malowania wykresu.
-W konstruktorze tej klasy zrób
setCentralWidget(&widgetMalującyWykres);
(zakładając,iż nie jest to wskaźnik oczywiście).Niewykluczone,że konstruktor tej swojej klasy okna będziesz musiał zmodyfikować tak,żeby przekazać odpowiednie dane do widgeta od wykresu.
-Kolejną rzeczą jaka się w konstruktorze przyda jest ustawienie atrybutu na automatyczne skasowanie po zamknięciu.Robisz to poprzez
setAttribute(Qt::WA_DeleteOnClose);
-Dalej to już prosto,w slocie do którego masz podłączony sygnał clicked() od guzika Narysuj robisz
TwojeOknoWykresów *wykres=new TwojeOknoWykresów(parametry);
wykres->show();
Ustawiony atrybut DeleteOnClose zadba o zwolnienie pamięci w momencie zamknięcia okna,więc nie będziesz musiał się martwić przechowaniem wskaźnika do nowo powstałego okna