What is type of this member of class?
Trong Qt em thấy người ta có tạo lớp QDesktopServices, sau khi include nó vào project thì người ta gọi được như thế này:
#include <QDesktopServices>
#include <QUrl>
....
QDesktopServices::openUrl(QUrl("http://google.com.vn/"));
Vậy openUrl của lớp QDesktopServices nó là cái gì? Định nghĩa nó trong class như thế nào?
Chắc chắn nó không phải là function rồi, vì nó có thể được gọi không thông qua đối tượng cụ thể. Vậy em muốn tạo một chức năng tương tự như thế trong class thì làm thế nào? @ltd
À, cái openUrl cụ thể là bool openUrl(const QUrl& url);
Vậy là nó vẫn là hàm, nhưng làm sao để gọi execute được như trên thì em chưa rõ.
Hay là chỉ trong Qt creator mới dùng được như thế
Em dùng Qt mấy nhỉ, 4x hay 5? Gỉả sử em dùng Qt 4.8 nhé (Qt 5 em search tương tự)
Đây là định nghĩa của openUrl trên Qt documents.
http://qt-project.org/doc/qt-4.8/qdesktopservices.html#openUrl
Đây là khai báo ở file header:
qdesktopservices.h
https://qt.gitorious.org/qt/qt/source/57756e72adf2081137b97f0e689dd16c770d10b1:src/gui/util/qdesktopservices.h#L62
Đây là định nghĩa ở file source:
qdesktopservices.cpp
https://qt.gitorious.org/qt/qtbase/source/0c3cfdba45f5e3db430b41649750dc767c93b888:src/gui/util/qdesktopservices.cpp#L176
Nó là
static
nên có thể gọi trực tiếp thế này. Google thêm vềstatic
trong C++ nhé. Hoặc hỏi ở topic khác ^^Đặt từ khóa
static
phía trước như trong file header ở trên.Nó là static function đó bạn . Bạn không cần phải tạo ra đối tượng của lớp để có thể gọi static function. Còn bạn muốn coi source để xem nó làm như thế nào thì bạn có thể tìm tới file .cpp mà xem, vì nó opensource mà, lúc cài vào sẽ có thêm phần source kèm theo nhé
Thanks mọi người, em test thử được rồi:
Good job well done
Ngoài ra kiểu enum khi đặt trong class cũng có thể truy cập không thông qua đối tượng.
enum
là trường hợp khác rồi em. Nhưng đúng, enum cũng làm được như vậy.