import org.eclipse.jface.dialogs.MessageDialog
import org.eclipse.swt.SWT
import org.eclipse.swt.events.SelectionAdapter
import org.eclipse.swt.events.SelectionEvent
import org.eclipse.swt.graphics.Image
import org.eclipse.swt.widgets.Display
import org.eclipse.swt.widgets.Menu
import org.eclipse.swt.widgets.MenuItem
import org.eclipse.swt.widgets.Shell
public class Menu1 {
public static void main(String[] args) {
final Display display = Display.getDefault()
final Shell shell = new Shell()
shell.setSize(327, 253)
// ---------创建窗口中的其他界面组件-------------
// 创建主菜单:文件、帮助
Menu mainMenu = new Menu(shell, SWT.BAR)
shell.setMenuBar(mainMenu)
// Menu mainMenu = new Menu(shell, SWT.POP_UP)//右键d出式菜单
// shell.setMenu(mainMenu)
MenuItem fileItem = new MenuItem(mainMenu, SWT.CASCADE)
fileItem.setText("文件(&F)")
MenuItem helpItem = new MenuItem(mainMenu, SWT.CASCADE)
helpItem.setText("帮助(&H)")
// 创建“文件”菜单下的子菜单:新建、退出
Menu fileMenu = new Menu(shell, SWT.DROP_DOWN)
fileItem.setMenu(fileMenu)
final MenuItem newFileItem = new MenuItem(fileMenu, SWT.CASCADE)
newFileItem.setText("新建(&N)")
MenuItem exitItem = new MenuItem(fileMenu, SWT.CASCADE)
exitItem.setText("退出")
exitItem.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
newFileItem.setEnabled(false)// 菜单置灰
}
})
// 创建“文本->新建”菜单下的子菜单:项目、包、类、接口、其他
Menu newFileMenu = new Menu(shell, SWT.DROP_DOWN)
newFileItem.setMenu(newFileMenu)
MenuItem newProjectItem = new MenuItem(newFileMenu, SWT.PUSH)
newProjectItem.setText("项目\tCtrl+N")// \t相当于Tab键,起到间隔的作用
newProjectItem.setAccelerator(SWT.CTRL + 'N')// 定义快捷键Ctrl+N
newProjectItem.setImage(new Image(display, "icons/project.gif"))
// 监听菜单项的选择事件
newProjectItem.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
MessageDialog.openInformation(null, "", "选择了新建项目")
}
})
// 建立其他菜单项
new MenuItem(newFileMenu, SWT.SEPARATOR)// 分隔符
new MenuItem(newFileMenu, SWT.CHECK).setText("包")
new MenuItem(newFileMenu, SWT.PUSH).setText("类")
new MenuItem(newFileMenu, SWT.PUSH).setText("接口")
new MenuItem(newFileMenu, SWT.SEPARATOR)
new MenuItem(newFileMenu, SWT.RADIO).setText("其他(&O)")
// -----------------END------------------------
shell.layout()
shell.open()
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep()
}
display.dispose()
}
}
你可以照着改成你需要的菜单项即可。
下面是我给treeWidget加的右键。。。楼主参考下,改下就可以了复制代码
private slots:
on_treeWidget_customContextMenuRequested(QPoint pos)
复制代码
ui->treeWidget->setContextMenuPolicy(Qt::CustomContextMenu)
void Composer::on_treeWidget_customContextMenuRequested(QPoint pos)
{
currentItem = ui->treeWidget->itemAt( pos )
if( currentItem == 0)
return
QMenu *treeWidgeMenu = new QMenu(ui->treeWidget)
treeWidgeMenu->addAction(ui->actionS_rename)
treeWidgeMenu->addAction(ui->actionCollpase_Rooms)
treeWidgeMenu->addAction(ui->actionUpdate_Driver)
treeWidgeMenu->addSeparator()
treeWidgeMenu->addAction(ui->actionS_delete)
treeWidgeMenu->exec(QCursor::pos())
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)