Tôi có một ứng dụng Qt trên Linux.Làm thế nào để Program Shortcuts Keyboard tùy chỉnh
Tôi muốn lập trình các phím tắt tùy chỉnh như CTRL - Q sau đó sẽ gọi một chương trình con thoát khỏi chương trình.
Tôi làm cách nào để thực hiện việc này?
Tôi có một ứng dụng Qt trên Linux.Làm thế nào để Program Shortcuts Keyboard tùy chỉnh
Tôi muốn lập trình các phím tắt tùy chỉnh như CTRL - Q sau đó sẽ gọi một chương trình con thoát khỏi chương trình.
Tôi làm cách nào để thực hiện việc này?
Hãy thử điều này:
new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q), this, SLOT(close()));
Bạn có thể tạo ra nó trong contructor của mẫu của bạn. Điều này cho phép tránh gây ô nhiễm cho lớp của bạn bằng một con trỏ để truy cập phím tắt. Bạn vẫn có thể muốn thêm con trỏ vào lối tắt nếu bạn muốn truy cập sau này. Phím tắt sẽ bị xóa khi ứng dụng thoát, vì ứng dụng này bị tạm dừng. Nó tự động kết nối, bạn không phải làm điều đó bằng tay.
Cũng lưu ý rằng không có trình tự Ctrl + Q mặc định trên Windows, nhưng có một trên Linux và MacOS.
Vì CTRL-Q có thể có mục menu hoặc mục nhập thanh công cụ, tôi nghĩ bạn đang tìm kiếm QAction.
Xem này: http://doc.qt.digia.com/4.6/qaction.html#shortcut-prop
LE:
Ví dụ về QAction
tại nơi làm việc:
QAction *foo = new QAction(this);
foo->setShortcut(Qt::Key_Q | Qt::CTRL);
connect(foo, SIGNAL(triggered()), this, SLOT(close()));
this->addAction(foo);
Chỉ cần tạo một dự án Qt GUI mới (tôi đã sử dụng QtCreator) và thêm mã mà đến constructor của cửa sổ chính và nó sẽ hoạt động như mong đợi.
Xin lưu ý rằng không cần giải phóng bộ nhớ vì khung Qt sẽ xử lý khi ứng dụng đóng.
đây là mẫu để tạo trình đơn tệp và thoát khỏi hành động và kết nối giữa tín hiệu và vị trí.
QMenu *fileMenu = new QMenu(trUtf8("&File"));
QAction *actionExit = new QAction(tr("E&xit"));
//set "ctrl+q shortcut for exit action
actionExit->setShortcut(tr("CTRL+Q"));
//connect triggered signal of actionExit to close slot
connect(actionExit, SIGNAL(triggered()), this, SLOT(close()));
//add actionExit into file menu
fileMenu->addAction(actionExit);
Đối với Qt hiện đại (5.9 như của bây giờ):
void MainWindow::bootStrap()
{
// create shortcut
QShortcut *shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q), this);
// connect its 'activated' signal to your function 'foo'
QObject::connect(shortcut, &QShortcut::activated,
this, &MainWindow::foo);
}
// somewhere in the code, define the function 'foo'
void MainWindow::foo()
{
qDebug() << "Ctrl+Q pressed.";
}
Đừng quên #include <QShortcut>
.
Thông tin khác: http://doc.qt.io/qt-5/qshortcut.html
Có ví dụ về cách thực hiện không? Tôi vẫn là một noob với QT và tôi đang gặp khó khăn trong việc tìm ra nó từ trang web đó. Họ chủ yếu nói về việc thêm hành động vào menu hoặc thanh công cụ. Nhưng tôi không có menu hoặc thanh công cụ. Tôi muốn các phím tắt để làm việc trong cửa sổ chính (cửa sổ duy nhất) trong ứng dụng của tôi. –
@JB_User Chắc chắn, tôi đã chỉnh sửa câu trả lời của mình. – Paul