Вы должны использовать лямбда-функцию:
#include <QApplication>
#include <QDesktopServices>
#include <QPushButton>
#include <QUrl>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QPushButton p("Click me");
QString link = "http://www.google.com";
QObject::connect(&p, &QPushButton::clicked, [&link](){
QDesktopServices::openUrl(QUrl(link));
});
p.show();
return a.exec();
}
или с std::bind()
#include <QApplication>
#include <QDesktopServices>
#include <QPushButton>
#include <QUrl>
#include <functional>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QPushButton p("Click me");
QString link = "http://www.google.com";
QObject::connect(&p, &QPushButton::clicked, std::bind(QDesktopServices::openUrl, QUrl(link)));
p.show();
return a.exec();
}
примечание:
вам нужно включить C ++ 11 в Qt, для этого обзора следующий вопрос: Как включить C ++ 11 в Qt Creator? , что означает, что вы добавляете CONFIG += c++11
в свой. про