Qt Creator で簡単な GUI を作っています。
mainwindow.cpp ファイルに 'openFile' 関数を作成しようとしていますが、この関数を mainwindow 自体のメンバーにするか、別の静的関数にするか、ウィジェットのメンバーにするかがわかりません。
この関数は本当に単純です。QFileDialog を呼び出し、ファイルへのパスを取得し、これまでに見たメニュー バーのすべてのファイルを開くコマンドのようにファイルを開きます。
ここに私が抱えている大きな問題があります。たとえば、関数内からUI要素にアクセスできるように、この関数をmainwindowのメンバーにしてみましたが、そうするとui->QTableWidget
信号をスロットに正しく接続できません。connect には構文があるため、それを行うにはメインウィンドウへの参照が必要なので、大量のエラーが発生しますconnect(sender, signal, receiver, slot)
次に、関数を独自に分離することにしましたが、どの UI 要素にもアクセスできません。
この問題を解決するにはどうすればよいですか?
編集 これが私がコンストラクターでやっていることです。
//Constructor
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QObject::connect(ui->actionOpen, &QAction::triggered, *parent, &MainWindow::openFile);
ui->tableWidget->setColumnCount(16);
}
結果のエラーは次のとおりです。
C:\workspace\audioPipe\audioPipe\mainwindow.cpp:76: error: C2664: 'QMetaObject::Connection QObject::connect<void(__cdecl QAction::* )(bool),void(__cdecl MainWindow::* )(void)>(const QAction *,Func1,const MainWindow *,Func2,Qt::ConnectionType)' : cannot convert parameter 3 from 'QWidget' to 'const MainWindow *'
with
[
Func1=void (__cdecl QAction::* )(bool),
Func2=void (__cdecl MainWindow::* )(void)
]
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called