Tôi đã thêm nhãn làm hình ảnh (biểu tượng) vào tiện ích con trong Qt. Tôi muốn hiển thị menu bật lên khi người dùng nhấp (nhấp chuột trái hoặc phải) trên nhãn. Làm thế nào tôi có thể đạt được điều này? Xin hãy giúp ...Qt - Trình đơn bật lên
Trả lời
Bạn sẽ muốn đặt ContextMenuPolicy
của tiện ích, sau đó kết nối sự kiện customContextMenuRequested
với một số vị trí sẽ hiển thị menu.
Xem: Qt and context menu
Nếu bạn muốn hiển thị một menu ngữ cảnh khi nhãn được nhấp (với bất kỳ nút chuột), tôi đoán bạn sẽ phải thực hiện lớp Label
của riêng bạn, kế thừa QLabel
và xử lý các cửa sổ bật lên menu của chính bạn trong trường hợp có sự kiện chuột.
Đây là một rất đơn giản (nhưng làm việc) phiên bản:
class Label : public QLabel
{
public:
Label(QWidget* pParent=0, Qt::WindowFlags f=0) : QLabel(pParent, f) {};
Label(const QString& text, QWidget* pParent = 0, Qt::WindowFlags f = 0) : QLabel(text, pParent, f){};
protected :
virtual void mouseReleaseEvent (QMouseEvent * ev) {
QMenu MyMenu(this);
MyMenu.addActions(this->actions());
MyMenu.exec(ev->globalPos());
}
};
Lớp này chuyên Label
sẽ hiển thị trong menu nội dung của tất cả các hành động được thêm vào nó. .
Hãy nói rằng cửa sổ chính của ứng dụng của bạn được gọi là MainFrm
và được hiển thị nhãn (label
Đây là cách các nhà xây dựng sẽ xem xét:
MainFrm::MainFrm(QWidget *parent) : MainFrm(parent), ui(new Ui::MainFrm)
{
ui->setupUi(this);
QAction* pAction1 = new QAction("foo", ui->label);
QAction* pAction2 = new QAction("bar", ui->label);
QAction* pAction3 = new QAction("test", ui->label);
ui->label->addAction(pAction1);
ui->label->addAction(pAction2);
ui->label->addAction(pAction3);
connect(pAction1, SIGNAL(triggered()), this, SLOT(onAction1()));
connect(pAction2, SIGNAL(triggered()), this, SLOT(onAction2()));
connect(pAction3, SIGNAL(triggered()), this, SLOT(onAction3()));
}
Nếu một nhãn là nhấp được, nó là một cách logic một "văn bản nút "và không phải là một" nhãn "nữa.
tôi sẽ đề nghị sử dụng QToolButton thay vào đó, và sử dụng QSS, tạo nên toolbutton để một nhãn.
#define SS_TOOLBUTTON_TEXT(_normal, _hover, _disabled) \
"QToolButton" "{" \
"background:transparent" \
"color:" #_normal ";" \
"}" \
"QToolButton:hover" "{" \
"color:" #_hover ";" \
"}" \
"QToolButton:disabled" "{" \
"color:" #_disabled ";" \
"}"
....
QToolButton *b = new QToolButton; {
b->setToolButtonStyle(Qt::ToolButtonTextOnly);
b->setStyleSheet(SS_TOOLBUTTON_TEXT(blue, red, gray));
b->setText(QString("[%1]").arg(tr("menu"));
}
b->setMenu(menu_to_popup);
connect(b, SIGNAL(clicked()), b, SLOT(showMenu()));
- 1. Trình đơn bật lên Android
- 2. trình đơn bật lên android
- 3. Tạo menu bật lên trong Qt cho QTableView
- 4. jTable nhấp chuột phải vào trình đơn bật lên
- 5. Trình đơn thả xuống chéo/Trình đơn bật lên qua phim flash
- 6. window.open với trình chặn bật lên
- 7. Trình đơn bật lên khi nhấp vào nút đang hoạt động Thanh
- 8. Bật/tắt mục trình đơn trong plugin Eclipse
- 9. Màu đơn giản điền QIcons trong Qt
- 10. Python: Cửa sổ bật lên PyQt
- 11. Bật lên ứng dụng
- 12. Hiển thị tiến trình trong cửa sổ bật lên
- 13. Android Bật lên với đầu mũi tên
- 14. Làm cách nào để tạo iframe bật lên trong cửa sổ bật lên Magnific?
- 15. Chiều rộng cửa sổ bật lên Bootstrap cho cửa sổ bật lên-bên trong
- 16. Điều hướng danh sách ActionBar: màu văn bản khác nhau trong tiêu đề và trình đơn bật lên
- 17. hộp thoại jquery bật lên
- 18. Vị trí bật lên Wpf
- 19. Ứng dụng đơn lẻ trong Qt
- 20. Chạy Qt Đơn vị kiểm tra
- 21. Tiến trình QT PythonBar
- 22. Cửa sổ bật lên MVC-pop
- 23. Có cách nào để xác định QToolbar bằng các nút và menu bật lên bằng Qt Designer không?
- 24. PHP: bật thông báo bật lên rồi chuyển hướng trang
- 25. Bật cửa sổ bật lên từ dịch vụ
- 26. Thiết lập kiểm tra đơn vị Qt
- 27. Cần trợ giúp để có cửa sổ bật lên Cửa sổ bật lên
- 28. Twitter toolstip và độ mờ bật lên và lớp phủ bật lên
- 29. Bật lên thời gian trong Android
- 30. Điều gì kích hoạt trình chặn cửa sổ bật lên trong trình duyệt?
Bạn muốn chính xác như thế nào: menu bật lên khi menu ngữ cảnh được yêu cầu (nhấp chuột phải) hoặc menu bật lên bất cứ khi nào nhãn được nhấp vào, cho dù đó là nút trái hay phải? –