#1277·qt

Issue with using *QFileDialog.SelectedFiles(), "interface conversion: interface {} is []interface {}, not []string"

Author: arturfabriciohahaedgyCreated Sep 15, 2022Updated May 15, 2025

The Issue I'm trying to get the directories selected when using QFileDialog but I keep getting the following error: panic: interface conversion: interface {} is []interface {}, not []string

goroutine 20 [running]:
github.com/therecipe/qt/widgets.(*QFileDialog).SelectedFiles(0x0?)
        C:/Users/_/go/pkg/mod/github.com/therecipe/[email protected]/widgets/widgets.go:13192 +0x15e
main.main.func1(0x0)
        D:/junk/qt-test/window.go:52 +0x70
reflect.Value.call({0x1967000?, 0xc000008828?, 0x1ee2040?}, {0x1bcaf82, 0x4}, {0xc0002104b0, 0x1, 0xd514a5?})
        C:/Program Files/Go/src/reflect/value.go:584 +0x8c5
reflect.Value.Call({0x1967000?, 0xc000008828?, 0xc000200330?}, {0xc0002104b0?, 0x1953d40?, 0x0?})
        C:/Program Files/Go/src/reflect/value.go:368 +0xbc
github.com/therecipe/qt/internal.handleCallback({0xc000116606, 0x22})
        C:/Users/_/go/pkg/mod/github.com/therecipe/[email protected]/internal/internal.go:73 +0x2fd
github.com/therecipe/qt/internal.asyncCallbackHandler({0xc000116606?, 0x0?})
        C:/Users/_/go/pkg/mod/github.com/therecipe/[email protected]/internal/internal.go:109 +0x1e
created by github.com/therecipe/qt/internal.InitProcess.func3
        C:/Users/_a/go/pkg/mod/github.com/therecipe/[email protected]/internal/internal.go:407 +0xf5

I don't even know if this library is recieving maintenance anymore, but if it is I'd like to know if it's an issue with my code or the library itself

The code

	widget := widgets.NewQWidget(nil, 0)
	widget.SetLayout(widgets.NewQHBoxLayout())
	mw.MainWin.SetCentralWidget(widget)

	input := widgets.NewQLineEdit(nil)
	input.SetPlaceholderText("Insert path...")
	widget.Layout().AddWidget(input)

	fileDialog := widgets.NewQFileDialog2(nil, "Select file", ".", "")
	fileDialog.SetFileMode(widgets.QFileDialog__Directory)

	button := widgets.NewQPushButton2("Search folders", nil)
	button.SetMaximumSize2(50, 50)
	button.ConnectClicked(func(bool) {
		widgets.QMessageBox_Information(nil, "OK", input.Text(), widgets.QMessageBox__Ok, widgets.QMessageBox__Ok)
		if fileDialog.Exec() == 1 {
			files := fileDialog.SelectedFiles()
			fmt.Printf("V: %v", files)
		}
	})
	widget.Layout().AddWidget(button)

The error always happens at when .SelectedFiles() is called.