右键,新建,点击Extension Class,搜索需要扩展的类即可。

String类扩展

package Qtjambi.extensions.java.lang.String;

import io.qt.core.QRegularExpression;
import io.qt.core.QString;
import io.qt.core.Qt;
import jqt.QType;
import manifold.ext.rt.api.Extension;
import manifold.ext.rt.api.Jailbreak;
import manifold.ext.rt.api.This;

@Extension
public class StringExtensions {
    public static char get(@This String self, int index){
        if (index < 0 || index >= self.length())
            throw new IndexOutOfBoundsException();
        return self.charAt(index);
    }
    public static char set(@This @Jailbreak String self, int index, char c){
        if (index < 0 || index >= self.length())
            throw new IndexOutOfBoundsException();
        self.value[index] = (byte) c;
        return self[index];
    }
    public static String arg(@This String self, Object... args){
        QRegularExpression re = new QRegularExpression("%\\d+");
        if (re.match(self).hasMatch())
            return QString.format(self, args).toString();
        return String.format(self, args);
    }
    public static int count(@This String self, String separator){
        return (int) QString.format(self).count(separator);
    }
    public static boolean contains(@This String self, String other, Qt.CaseSensitivity cs){
        return QString.format(self).contains(other, cs);
    }
    public static int toInt(@This String self, int base){
        return QString.format(self).toInt(base);
    }
    public static <T> T create(@This String self){
        return (T)QType.createInstance(QType.create(self));
    }
    public static <T> T create(@This String self, Object... args){
        return (T)QType.createInstance(QType.create(self), args);
    }
}

Object类扩展

package Qtjambi.extensions.java.lang.Object;

import io.qt.core.*;
import manifold.ext.rt.api.Extension;
import manifold.ext.rt.api.This;
import java.lang.Object;

@Extension
public class ObjectExtensions {
  public static QVariant toVariant(@This Object self){
    return QVariant.fromValue(self);
  }
  public static Boolean toBoolean(@This Object self){
    if (self instanceof String)
      return Boolean.parseBoolean((String)self);
    else if (self instanceof QVariant)
      return ((QVariant)self).value(Boolean.class);
    return self.toVariant().value(Boolean.class);
  }
  public static Character toChar(@This Object self){
    if (self instanceof String)
      return ((String)self)[0];
    else if (self instanceof QVariant)
      return ((QVariant)self).value(Character.class);
    return self.toVariant().value(Character.class);
  }
  public static Byte toByte(@This Object self){
    if (self instanceof String)
      return Byte.parseByte((String)self);
    else if (self instanceof QVariant)
      return ((QVariant)self).value(Byte.class);
    return self.toVariant().value(Byte.class);
  }
  public static Short toShort(@This Object self){
    if (self instanceof String)
      return Short.parseShort((String)self);
    else if (self instanceof QVariant)
      return ((QVariant)self).value(Short.class);
    return self.toVariant().value(Short.class);
  }
  public static Integer toInt(@This Object self){
    if (self instanceof String)
      return Integer.parseInt((String)self);
    else if (self instanceof QVariant)
      return ((QVariant)self).value(Integer.class);
    return self.toVariant().value(Integer.class);
  }
  public static Long toLong(@This Object self){
    if (self instanceof String)
      return Long.parseLong((String)self);
    else if (self instanceof QVariant)
      return ((QVariant)self).value(Long.class);
    return self.toVariant().value(Long.class);
  }
  public static Float toFloat(@This Object self){
    if (self instanceof String)
      return Float.parseFloat((String)self);
    else if (self instanceof QVariant)
      return ((QVariant)self).value(float.class);
    return self.toVariant().value(Float.class);
  }
  public static Double toDouble(@This Object self){
    if (self instanceof String)
      return Double.parseDouble((String)self);
    else if (self instanceof QVariant)
      return ((QVariant)self).value(Double.class);
    return self.toVariant().value(Double.class);
  }
  public static <T> T toValue(@This Object self, Class<T> cls){
    if (self instanceof QVariant)
      return ((QVariant)self).value(cls);
    return self.toVariant().value(cls);
  }
  public static boolean isType(@This Object self, QMetaType.Type type){
    if (self instanceof QVariant)
      return ((QVariant)self).metaType().id() == type.value();
    return self.toVariant().metaType().id() == type.value();
  }
}

 Character类扩展

package Qtjambi.extensions.java.lang.Character;

import manifold.ext.rt.api.Extension;
import manifold.ext.rt.api.This;
import java.lang.Character;

@Extension
public class CharacterExtensions {
  public static boolean isLetterOrDigit(@This Character self) {
    return Character.isLetterOrDigit(self);
  }
  public static boolean isLetter(@This Character self) {
    return Character.isLetter(self);
  }
  public static boolean isDigit(@This Character self) {
    return Character.isDigit(self);
  }
  public static boolean isUpperCase(@This Character self) {
    return Character.isUpperCase(self);
  }
  public static boolean isLowerCase(@This Character self) {
    return Character.isLowerCase(self);
  }
  public static Character toUpperCase(@This Character self) {
    return Character.toUpperCase(self);
  }
  public static Character toLowerCase(@This Character self) {
    return Character.toLowerCase(self);
  }
}

 Integer类扩展

package Qtjambi.extensions.java.lang.Integer;

import io.qt.core.QString;
import manifold.ext.rt.api.Extension;
import manifold.ext.rt.api.This;
import java.lang.Integer;

@Extension
public class IntegerExtensions {
  public static String toText(@This Integer self, int base) {
    return QString.number(self, base).toString();
  }
}

 

posted on 2025-04-02 13:38  dalgleish  阅读(20)  评论(0)    收藏  举报