.使用QtDesigner 绘制界面
用Qt最大优点是可以用QtDesigner 来进行可视化设计,这样大大加快程序开发速度,Jambi也保留这个优点.如果对QtDesigner 比较熟练,这个上手很快.
注意不要直接使用QtSDK中QtDesigner ,它生成设计文件.ui 需要转换并用JNI才能使用.
2.1 设计界面
这个可以直接在命令行下执行 Jambi 目录下./designer.sh,即可显示,它生成是 .jui这样专用文件
Jambi Designer 的界面
QtDesigner 界面
具体的操作方法可以另行找教程
3.1 生成代码
.jui 的文件需要用命令行工具JUIC 来转换成相应java代码,(这个工具类似于QtSDK 的uic
可以用先把建立一个系统调用脚本
sudo vim /usr/local/bin/juic
JAMBIDIR=/Library/QtJambi-4.8.6
if [ ! -d “$JAMBIDIR” ]; then
echo “Qt Jambi libs don’t seem to be installed. Will attempt to install them:\nsudo sh installer-osx.sh”
fi
JAMBIHOME=/Users/pro/Documents/other-workspace/qtjambi-4.8.6
DYLD_LIBRARY_PATH=$JAMBIDIR/lib $JAMBIHOME/bin/juic $@
直接执行生成语句,-pf是指定前缀hello,这样生成 prefx+dialog.java的名称,否则固定为UI_dialog.java
pro$ juic helloDialog.jui -pfUi_hello
updated: Ui_helloDialog
最终生成的java 类有如下命令规则, 前缀+顶层对象名.java
缺省的前缀是 Ui_,
3.3 生成最终代码
生成 Ui_helloDialog.java
/********************************************************************************
** Form generated from reading ui file ‘helloDialog.jui’
**
** Created by: Qt User Interface Compiler version 4.8.6
**
** WARNING! All changes made in this file will be lost when recompiling ui file!
********************************************************************************/
import com.trolltech.qt.core.;
import com.trolltech.qt.gui.;
public class Ui_helloDialog implements com.trolltech.qt.QUiForm
{
public QDialogButtonBox buttonBox;
public QListWidget listWidget;
public Ui_helloDialog() { super(); }
public void setupUi(QDialog Dialog)
{
Dialog.setObjectName("Dialog");
Dialog.resize(new QSize(400, 300).expandedTo(Dialog.minimumSizeHint()));
buttonBox = new QDialogButtonBox(Dialog);
buttonBox.setObjectName("buttonBox");
buttonBox.setGeometry(new QRect(30, 240, 341, 32));
buttonBox.setOrientation(com.trolltech.qt.core.Qt.Orientation.Horizontal);
buttonBox.setStandardButtons(com.trolltech.qt.gui.QDialogButtonBox.StandardButton.createQFlags(com.trolltech.qt.gui.QDialogButtonBox.StandardButton.Cancel,com.trolltech.qt.gui.QDialogButtonBox.StandardButton.Ok));
listWidget = new QListWidget(Dialog);
listWidget.setObjectName("listWidget");
listWidget.setGeometry(new QRect(0, 0, 401, 221));
retranslateUi(Dialog);
buttonBox.accepted.connect(Dialog, "accept()");
buttonBox.rejected.connect(Dialog, "reject()");
Dialog.connectSlotsByName();
} // setupUi
void retranslateUi(QDialog Dialog)
{
Dialog.setWindowTitle(com.trolltech.qt.core.QCoreApplication.translate("Dialog", "Dialog", null));
} // retranslateUi
}
3.4 测试生成效果
写一个主程序Main.java来调用这个类
import com.trolltech.qt.gui.*;
public class Main
{
public static void main(String args[])
{
QApplication.initialize(args);
//这种写法是抄例子的
QDialog d = new QDialog();
Ui_helloDialog ui = new Ui_helloDialog();
ui.setupUi(d);
d.exec();
QApplication.execStatic();
QApplication.shutdown();
}
}
编译
javac Ui_helloDialog.java Main.java
运行
java -XstartOnFirstThread Main
最终效界,可见跟设计一模一样
最终运行效果
三.使用QSS定制界面
Qt另一大优点就是可以采用Qt Style Sheet 来定制所有控件外观,这样很容易开发出比较华丽UI界面.并且能动态切换不同主题.
参考链接:https://www.jianshu.com/p/6d7f8a560169